[ 
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. 
Including the failure to update the config and inability of the server to 
recreate the index after being restarted.
{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, 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}


> 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. 
> Including the failure to update the config and inability of the server to 
> recreate the index after being restarted.
> {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)

Reply via email to