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

Reply via email to