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