[ https://issues.apache.org/jira/browse/GEODE-5318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
nabarun updated GEODE-5318: --------------------------- Description: +*Steps to reproduce the issue.*+ # start locator # start server # create region # define index as "define index --name=index --region="Member.entrySet" --expression="value.getId" " # create defined indexes This is will result in a failure causing no updates to the cluster config for the newly created indexes, even though the indexes are created. +_*So when a server is restarted , it won't recreate these indexes.*_+ +*Cause of the problem:*+ We try to extract the region name to update the cluster config from the index's "from clause". We end up getting <region_name>.entrySet . But there are no region named as such so no updates to the cluster config. +*Solution*+ Use the fix for GEODE-2764 where we can extract the proper region name from the "from clause" *problematic code:* {code:java} RegionConfig region = config.findRegionConfiguration(index.getFromClause());{code} *fix:* {code:java} String regionPath = getValidRegionName(index.getFromClause(), config); RegionConfig regionConfig = config.findRegionConfiguration(regionPath);{code} +*Example:*+ Below we can see an complete execution in gfsh which leads to this failure. {noformat} _________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 1.8.0-SNAPSHOT Monitor and Manage Apache Geode gfsh>start locator Starting a Geode Locator in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can... .... Locator in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can on 10.0.0.40[10334] as untie-happy-can is currently online. Process ID: 29310 Uptime: 4 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can/untie-happy-can.log JVM Arguments: -Dgemfire.enable-cluster-configuration=true -Dgemfire.load-cluster-configuration-from-dir=false -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar Successfully connected to: JMX Manager [host=10.0.0.40, port=1099] Cluster configuration service is up and running. gfsh>start server Starting a Geode Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... ... Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo is currently online. Process ID: 29498 Uptime: 2 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar gfsh>create region --name=Member --type=PARTITION Member | Status ------------- | ------------------------------------------- fix-vast-kilo | Region "/Member" created on "fix-vast-kilo" gfsh>define index --name=memberPartyIdIndex --expression="value.getPartyId" --region="/Member.entrySet" Index successfully defined with following details Name : memberPartyIdIndex Expression : value.getPartyId RegionPath : /Member.entrySet gfsh>create defined indexes Member | Status | Message --------------------------------------- | ------ | -------------------------------- 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | OK | Created index memberPartyIdIndex failed to update cluster config for cluster. Reason: RegionConfig is null gfsh>list indexes Member Name | Member ID | Region Path | Name | Type | Indexed Expression | From Clause | Valid Index ------------- | --------------------------------------- | ----------- | ------------------ | ----- | ------------------ | ---------------- | ----------- fix-vast-kilo | 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | /Member | memberPartyIdIndex | RANGE | value.getPartyId | /Member.entrySet | true gfsh>stop server --name optional --name: Member name or ID of the Cache Server in the Geode cluster.; no default value gfsh>stop server --name=fix-vast-kilo Stopping Cache Server running in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo... Process ID: 29498 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log ... gfsh>start server --name optional --name: The member name to give this Cache Server in the Geode cluster.; no default value gfsh>start server --name optional --name: The member name to give this Cache Server in the Geode cluster.; no default value gfsh>start server --name=fix-vast-kilo Starting a Geode Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... ... Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo is currently online. Process ID: 29893 Uptime: 2 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar gfsh>list region List of regions --------------- Member gfsh>list indexes No Indexes Found {noformat} was: +*Steps to reproduce the issue.*+ # start locator # start server # create region # define index as "define index --name=index --region="Member.entrySet" --expression="value.getId" " # create defined indexes This is will result in a failure causing no updates to the cluster config for the newly created indexes. +_*So when a server is restarted , it won't recreate these indexes.*_+ +*Cause of the problem:*+ We try to extract the region name to update the cluster config from the index's "from clause". We end up getting <region_name>.entrySet . But there are no region named as such so no updates to the cluster config. +*Solution*+ Use the fix for GEODE-2764 where we can extract the proper region name from the "from clause" *problematic code:* {code:java} RegionConfig region = config.findRegionConfiguration(index.getFromClause());{code} *fix:* {code:java} String regionPath = getValidRegionName(index.getFromClause(), config); RegionConfig regionConfig = config.findRegionConfiguration(regionPath);{code} +*Example:*+ Below we can see an complete execution in gfsh which leads to this failure. {noformat} _________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 1.8.0-SNAPSHOT Monitor and Manage Apache Geode gfsh>start locator Starting a Geode Locator in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can... .... Locator in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can on 10.0.0.40[10334] as untie-happy-can is currently online. Process ID: 29310 Uptime: 4 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can/untie-happy-can.log JVM Arguments: -Dgemfire.enable-cluster-configuration=true -Dgemfire.load-cluster-configuration-from-dir=false -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar Successfully connected to: JMX Manager [host=10.0.0.40, port=1099] Cluster configuration service is up and running. gfsh>start server Starting a Geode Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... ... Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo is currently online. Process ID: 29498 Uptime: 2 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar gfsh>create region --name=Member --type=PARTITION Member | Status ------------- | ------------------------------------------- fix-vast-kilo | Region "/Member" created on "fix-vast-kilo" gfsh>define index --name=memberPartyIdIndex --expression="value.getPartyId" --region="/Member.entrySet" Index successfully defined with following details Name : memberPartyIdIndex Expression : value.getPartyId RegionPath : /Member.entrySet gfsh>create defined indexes Member | Status | Message --------------------------------------- | ------ | -------------------------------- 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | OK | Created index memberPartyIdIndex failed to update cluster config for cluster. Reason: RegionConfig is null gfsh>list indexes Member Name | Member ID | Region Path | Name | Type | Indexed Expression | From Clause | Valid Index ------------- | --------------------------------------- | ----------- | ------------------ | ----- | ------------------ | ---------------- | ----------- fix-vast-kilo | 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | /Member | memberPartyIdIndex | RANGE | value.getPartyId | /Member.entrySet | true gfsh>stop server --name optional --name: Member name or ID of the Cache Server in the Geode cluster.; no default value gfsh>stop server --name=fix-vast-kilo Stopping Cache Server running in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo... Process ID: 29498 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log ... gfsh>start server --name optional --name: The member name to give this Cache Server in the Geode cluster.; no default value gfsh>start server --name optional --name: The member name to give this Cache Server in the Geode cluster.; no default value gfsh>start server --name=fix-vast-kilo Starting a Geode Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... ... Server in /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo on 10.0.0.40[40404] as fix-vast-kilo is currently online. Process ID: 29893 Uptime: 2 seconds Geode Version: 1.8.0-SNAPSHOT Java Version: 1.8.0_161 Log File: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar gfsh>list region List of regions --------------- Member gfsh>list indexes No Indexes Found {noformat} > create defined index does not update cluster config if methods are invoked in > the from clause > --------------------------------------------------------------------------------------------- > > Key: GEODE-5318 > URL: https://issues.apache.org/jira/browse/GEODE-5318 > Project: Geode > Issue Type: Bug > Components: querying > Reporter: nabarun > Priority: Major > > +*Steps to reproduce the issue.*+ > # start locator > # start server > # create region > # define index as "define index --name=index --region="Member.entrySet" > --expression="value.getId" " > # create defined indexes > This is will result in a failure causing no updates to the cluster config for > the newly created indexes, even though the indexes are created. +_*So when a > server is restarted , it won't recreate these indexes.*_+ > +*Cause of the problem:*+ > We try to extract the region name to update the cluster config from the > index's "from clause". > We end up getting <region_name>.entrySet . But there are no region named as > such so no updates to the cluster config. > > +*Solution*+ > Use the fix for GEODE-2764 where we can extract the proper region name from > the "from clause" > *problematic code:* > {code:java} > RegionConfig region = > config.findRegionConfiguration(index.getFromClause());{code} > *fix:* > {code:java} > String regionPath = getValidRegionName(index.getFromClause(), config); > RegionConfig regionConfig = config.findRegionConfiguration(regionPath);{code} > +*Example:*+ > Below we can see an complete execution in gfsh which leads to this failure. > {noformat} > _________________________ __ > / _____/ ______/ ______/ /____/ / > / / __/ /___ /_____ / _____ / > / /__/ / ____/ _____/ / / / / > /______/_/ /______/_/ /_/ 1.8.0-SNAPSHOT > Monitor and Manage Apache Geode > gfsh>start locator > Starting a Geode Locator in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can... > .... > Locator in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can > on 10.0.0.40[10334] as untie-happy-can is currently online. > Process ID: 29310 > Uptime: 4 seconds > Geode Version: 1.8.0-SNAPSHOT > Java Version: 1.8.0_161 > Log File: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/untie-happy-can/untie-happy-can.log > JVM Arguments: -Dgemfire.enable-cluster-configuration=true > -Dgemfire.load-cluster-configuration-from-dir=false > -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true > -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 > Class-Path: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar > Successfully connected to: JMX Manager [host=10.0.0.40, port=1099] > Cluster configuration service is up and running. > gfsh>start server > Starting a Geode Server in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... > ... > Server in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo > on 10.0.0.40[40404] as fix-vast-kilo is currently online. > Process ID: 29498 > Uptime: 2 seconds > Geode Version: 1.8.0-SNAPSHOT > Java Version: 1.8.0_161 > Log File: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log > JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] > -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true > -XX:OnOutOfMemoryError=kill -KILL %p > -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true > -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 > Class-Path: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar > gfsh>create region --name=Member --type=PARTITION > Member | Status > ------------- | ------------------------------------------- > fix-vast-kilo | Region "/Member" created on "fix-vast-kilo" > gfsh>define index --name=memberPartyIdIndex --expression="value.getPartyId" > --region="/Member.entrySet" > Index successfully defined with following details > Name : memberPartyIdIndex > Expression : value.getPartyId > RegionPath : /Member.entrySet > gfsh>create defined indexes > Member | Status | Message > --------------------------------------- | ------ | > -------------------------------- > 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | OK | Created index > memberPartyIdIndex > failed to update cluster config for cluster. Reason: RegionConfig is null > gfsh>list indexes > Member Name | Member ID | Region Path | Name | Type | Indexed Expression | > From Clause | Valid Index > ------------- | --------------------------------------- | ----------- | > ------------------ | ----- | ------------------ | ---------------- | > ----------- > fix-vast-kilo | 10.0.0.40(fix-vast-kilo:29498)<v1>:1025 | /Member | > memberPartyIdIndex | RANGE | value.getPartyId | /Member.entrySet | true > gfsh>stop server --name > optional --name: Member name or ID of the Cache Server in the Geode cluster.; > no default value > gfsh>stop server --name=fix-vast-kilo > Stopping Cache Server running in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo > on 10.0.0.40[40404] as fix-vast-kilo... > Process ID: 29498 > Log File: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log > ... > gfsh>start server --name > optional --name: The member name to give this Cache Server in the Geode > cluster.; no default value > gfsh>start server --name > optional --name: The member name to give this Cache Server in the Geode > cluster.; no default value > gfsh>start server --name=fix-vast-kilo > Starting a Geode Server in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo... > ... > Server in > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo > on 10.0.0.40[40404] as fix-vast-kilo is currently online. > Process ID: 29893 > Uptime: 2 seconds > Geode Version: 1.8.0-SNAPSHOT > Java Version: 1.8.0_161 > Log File: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/bin/fix-vast-kilo/fix-vast-kilo.log > JVM Arguments: -Dgemfire.default.locators=10.0.0.40[10334] > -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true > -XX:OnOutOfMemoryError=kill -KILL %p > -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true > -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 > Class-Path: > /home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-core-1.8.0-SNAPSHOT.jar:/home/nabarun/Documents/codeWork/dev2/gemfire/open/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar > gfsh>list region > List of regions > --------------- > Member > gfsh>list indexes > No Indexes Found > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)