geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juan José Ramos Cassella (JIRA) <j...@apache.org>
Subject [jira] [Created] (GEODE-3916) CreateDefinedIndexesCommand ignores failed members if at least one member succeeds creating the index
Date Fri, 27 Oct 2017 11:29:00 GMT
Juan José Ramos Cassella created GEODE-3916:
-----------------------------------------------

             Summary: CreateDefinedIndexesCommand ignores failed members if at least one member
succeeds creating the index
                 Key: GEODE-3916
                 URL: https://issues.apache.org/jira/browse/GEODE-3916
             Project: Geode
          Issue Type: Bug
          Components: gfsh
            Reporter: Juan José Ramos Cassella


I've found this issue while working on GEODE-3898.
With the current logic some indexes might be correctly created in some members and fail in
others; but the user is never notified about these failures if there's at least one successful
creation.
The problem resides within the following logic:

{code:title=CreateDefinedIndexesCommand.java|borderStyle=solid}
	if (!successfulMembers.isEmpty()) {
		final InfoResultData infoResult = ResultBuilder.createInfoResultData();
		(...)
        result = ResultBuilder.buildResult(infoResult);
	} else {
		// Group members by the exception thrown.
		final ErrorResultData erd = ResultBuilder.createErrorResultData();
		(...)
		result = ResultBuilder.buildResult(erd);
	}
{code}

*How to Reproduce*
# Start a locator with {{enable-cluster-configuration-enabled=true}}.
# Start two servers with {{enable-cluster-configuration-enabled=true}}.
# Create a sample region: {{gfsh create region --name=TestRegion --type=REPLICATE}}.
# Create one index: {{create index --name=index1 --expression=value --region=TestRegion1 --member=host1-server1}}
# Define two indexes: {{gfsh -e "define index --name=index1 --expression=value1 --region=TestRegion1"
-e "define index --name=index2 --expression=value2 --region=TestRegion1"}}.
# Created the defined indexes: {{gfsh create defined indexes}}.

The last command will show that the index was successfully created only on the second server
and won't say anything about what happened on the first one; which can be troublesome for
users that want to automate this kind of process:

{code}
Indexes successfully created. Use list indexes to get details.
1. 192.168.1.4(host1-server2:11001)<v1>:1025
{code}

Moreover, the {{list indexes}} command will show that the same index has a different definition
on both servers:

{code}
(3) Executing - list indexes

 Member Name  |                 Member ID                 | Region Path  |  Name  | Type 
| Indexed Expression | From Clause  | Valid Index
------------- | ----------------------------------------- | ------------ | ------ | -----
| ------------------ | ------------ | -----------
host1-server1 | 192.168.1.4(host1-server1:11002)<v1>:1026 | /TestRegion1 | index1 |
RANGE | value              | /TestRegion1 | true
host1-server1 | 192.168.1.4(host1-server1:11002)<v1>:1026 | /TestRegion1 | index2 |
RANGE | value2             | /TestRegion1 | true
host1-server2 | 192.168.1.4(host1-server2:11001)<v1>:1025 | /TestRegion1 | index1 |
RANGE | value1             | /TestRegion1 | true
host1-server2 | 192.168.1.4(host1-server2:11001)<v1>:1025 | /TestRegion1 | index2 |
RANGE | value2             | /TestRegion1 | true

{code}

The command should be able to split the results and report back to the user which indexes
succeeded and which failed, specifying on which members as well.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message