Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-9407

RegionDestroyedException while executing GetMemberInformationFunction

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              aaronlindsey Aaron Lindsey
              aaronlindsey Aaron Lindsey
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: