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

Avoid possible EntryDestroyedException error in wan-copy region command when entry destroyed in partitioned region

    XMLWordPrintableJSON

Details

    Description

      When the wan-copy region command is executed over a partitioned region, it is possible that sometimes an EntryDestroyedException error is found if, while reading the entries from the region, one of them is destroyed.

      The error has been seen sometimes when running the following test:

      WanCopyRegionCommandDUnitTest.

      testSuccessfulExecutionWhileRunningOpsOnRegion(true, true).

       

      Log of the error:

      Multiple Failures (2 failures)
          org.opentest4j.AssertionFailedError: [            Member             | Status | Message
      ------------------------------ | ------ | ---------------------------------------------------------------------------
      alberto-dell(421543)<v2>:41010 | ERROR  | Execution failed. Error: org.apache.geode.cache.EntryDestroyedException: 26
      alberto-dell(421504)<v1>:41009 | OK     | Entries copied: 2,977
      alberto-dell(421598)<v3>:41011 | OK     | Entries copied: 3,042

      expected: OK
       but was: ERROR
          java.lang.AssertionError: Suspicious strings were written to the log during this run.
      Fix the strings or use IgnoredException.addIgnoredException to ignore.
      -----------------------------------------------------------------------
      Found suspect string in 'dunit_suspect-vm6.log' at line 1883

      [error 2022/02/01 08:58:59.046 CET <Function Execution Processor2> tid=99] Exception occurred attempting to wan-copy region
      java.util.concurrent.ExecutionException: org.apache.geode.cache.EntryDestroyedException: 26
          at java.util.concurrent.FutureTask.report(FutureTask.java:122)
          at java.util.concurrent.FutureTask.get(FutureTask.java:192)
          at org.apache.geode.cache.wan.internal.WanCopyRegionFunctionService.execute(WanCopyRegionFunctionService.java:90)
          at org.apache.geode.management.internal.cli.functions.WanCopyRegionFunction.executeFunctionInService(WanCopyRegionFunction.java:163)
          at org.apache.geode.management.internal.cli.functions.WanCopyRegionFunction.executeFunction(WanCopyRegionFunction.java:157)
          at org.apache.geode.management.cli.CliFunction.execute(CliFunction.java:37)
          at org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:201)
          at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:382)
          at org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:447)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
          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.lang.Thread.run(Thread.java:748)
      Caused by: org.apache.geode.cache.EntryDestroyedException: 26
          at org.apache.geode.internal.cache.NonTXEntry.basicGetEntry(NonTXEntry.java:62)
          at org.apache.geode.internal.cache.NonTXEntry.getRegion(NonTXEntry.java:119)
          at org.apache.geode.internal.cache.NonTXEntry.hashCode(NonTXEntry.java:157)
          at java.util.HashMap.hash(HashMap.java:340)
          at java.util.HashMap.put(HashMap.java:613)
          at java.util.HashSet.add(HashSet.java:220)
          at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
          at java.util.Iterator.forEachRemaining(Iterator.java:116)
          at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
          at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
          at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
          at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1580)
          at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
          at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
          at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
          at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
          at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
          at org.apache.geode.management.internal.cli.functions.WanCopyRegionFunctionDelegate.getEntries(WanCopyRegionFunctionDelegate.java:193)
          at org.apache.geode.management.internal.cli.functions.WanCopyRegionFunctionDelegate.wanCopyRegion(WanCopyRegionFunctionDelegate.java:104)
          at org.apache.geode.management.internal.cli.functions.WanCopyRegionFunction.lambda$executeFunctionInService$0(WanCopyRegionFunction.java:164)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
          ... 1 more

      Attachments

        Issue Links

          Activity

            People

              alberto.gomez Alberto Gomez
              alberto.gomez Alberto Gomez
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: