geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juan José Ramos Cassella (JIRA) <>
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
             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
The problem resides within the following logic:

	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);

*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:

Indexes successfully created. Use list indexes to get details.

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

(3) Executing - list indexes

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


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

View raw message