Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
Description
GetMemberInformationFunction is used by the gfsh "describe member" command, the management REST API "/members" endpoint, and is also used internally within Geode. If this function is invoked while concurrently destroying a region, it may throw RegionDestroyedException while trying to gather information about the destroyed region's subregions.
This bug manifests as a nasty error message in the logs of the member where the function was being executed (shown below). This confuses Geode users/developers/operators because it looks like a problem with the system while instead it's actually expected behavior. GetMemberInformationFunction should probably catch RegionDestroyedException and remove the destroyed region from the set of region names in ManagementUtils.getAllRegionNames.
[error 2021/06/29 23:01:38.640 GMT system-test-gemfire-server-0 <Function Execution Processor3> tid=0x94] Unable to gather runtime information on this member. org.apache.geode.cache.RegionDestroyedException: Partitioned Region @79f60edb [path='/region'; dataPolicy=PARTITION; prId=37; isDestroyed=true; isClosed=false; retryTimeout=3600000; serialNumber=4309; partition attributes=PartitionAttributes@1299510666[redundantCopies=2;localMaxMemory=594;totalMaxMemory=2147483647;totalNumBuckets=113;partitionResolver=null;colocatedWith=null;recoveryDelay=-1;startupRecoveryDelay=0;FixedPartitionAttributes=null;partitionListeners=null]; on VM system-test-gemfire-server-0(system-test-gemfire-server-0:1)<v3>:41000] at org.apache.geode.internal.cache.LocalRegion.checkRegionDestroyed(LocalRegion.java:7342) at org.apache.geode.internal.cache.LocalRegion.checkReadiness(LocalRegion.java:2757) at org.apache.geode.internal.cache.LocalRegion.subregions(LocalRegion.java:1908) at org.apache.geode.management.internal.util.ManagementUtils.getAllRegionNames(ManagementUtils.java:167) at org.apache.geode.management.internal.functions.GetMemberInformationFunction.getMemberInformation(GetMemberInformationFunction.java:131) at org.apache.geode.management.internal.configuration.realizers.MemberRealizer.get(MemberRealizer.java:52) at org.apache.geode.management.internal.configuration.realizers.MemberRealizer.get(MemberRealizer.java:35) at org.apache.geode.management.internal.functions.CacheRealizationFunction.executeGet(CacheRealizationFunction.java:136) at org.apache.geode.management.internal.functions.CacheRealizationFunction.execute(CacheRealizationFunction.java:92) at org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:201) at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376) at org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:441) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.geode.distributed.internal.ClusterOperationExecutors.runUntilShutdown(ClusterOperationExecutors.java:444) at org.apache.geode.distributed.internal.ClusterOperationExecutors.doFunctionExecutionThread(ClusterOperationExecutors.java:379) at org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:120) at java.base/java.lang.Thread.run(Thread.java:829)
Attachments
Issue Links
- links to