[
https://issues.apache.org/jira/browse/RATIS-2159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17884387#comment-17884387
]
Tsz-wo Sze commented on RATIS-2159:
-----------------------------------
In SegmentedRaftLog.retainLog(..),
# it gets an entry from the cache, and then
# calls retain().
The entry could be removed and released in between #1 and #2. It leads to the
"fail to retain" failure.
> TestRaftWithSimulatedRpc could "fail to retain".
> ------------------------------------------------
>
> Key: RATIS-2159
> URL: https://issues.apache.org/jira/browse/RATIS-2159
> Project: Ratis
> Issue Type: Bug
> Reporter: Tsz-wo Sze
> Priority: Major
>
> {code}
> Error: Tests run: 6, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 42.31
> s <<< FAILURE! - in
> org.apache.ratis.server.simulation.TestRaftWithSimulatedRpc
> Error:
> org.apache.ratis.server.simulation.TestRaftWithSimulatedRpc.testWithLoad
> Time elapsed: 8.47 s <<< ERROR!
> java.lang.IllegalStateException: Failed to retain: object has already been
> completely released.
> at
> org.apache.ratis.util.ReferenceCountedLeakDetector$Impl.retain(ReferenceCountedLeakDetector.java:116)
> at
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.retainLog(SegmentedRaftLog.java:310)
> at
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.get(SegmentedRaftLog.java:285)
> at
> org.apache.ratis.RaftTestUtil.logEntriesContains(RaftTestUtil.java:187)
> at
> org.apache.ratis.RaftTestUtil.logEntriesContains(RaftTestUtil.java:172)
> at
> org.apache.ratis.RaftTestUtil.lambda$assertLogEntries$5(RaftTestUtil.java:250)
> at
> java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
> ...
> at java.util.stream.ReferencePipeline.count(ReferencePipeline.java:593)
> at org.apache.ratis.RaftTestUtil.assertLogEntries(RaftTestUtil.java:251)
> at org.apache.ratis.RaftTestUtil.assertLogEntries(RaftTestUtil.java:242)
> at org.apache.ratis.RaftBasicTests.testWithLoad(RaftBasicTests.java:424)
> at
> org.apache.ratis.RaftBasicTests.lambda$testWithLoad$8(RaftBasicTests.java:344)
> at
> org.apache.ratis.server.impl.MiniRaftCluster$Factory$Get.runWithNewCluster(MiniRaftCluster.java:143)
> at
> org.apache.ratis.server.impl.MiniRaftCluster$Factory$Get.runWithNewCluster(MiniRaftCluster.java:121)
> at org.apache.ratis.RaftBasicTests.testWithLoad(RaftBasicTests.java:344)
> ...
> {code}
> See
> https://github.com/apache/ratis/actions/runs/10865610568/job/30154388685?pr=1150#step:5:741
--
This message was sent by Atlassian Jira
(v8.20.10#820010)