[ 
https://issues.apache.org/jira/browse/GEODE-5318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

nabarun reassigned GEODE-5318:
------------------------------

    Assignee: nabarun

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