[ 
https://issues.apache.org/jira/browse/RATIS-2485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18081913#comment-18081913
 ] 

Tsz-wo Sze commented on RATIS-2485:
-----------------------------------

bq. You can try the patch and observe the test failure locally. With the patch 
applied, run:
`./mvnw 
-Dtest=org.apache.ratis.server.simulation.TestRaftReconfigurationWithSimulatedRpc#testReconfTwice
 test`

[~aoli-al], Tried below but failed.

{code}
$ git checkout af00dea483c74f1e94139cb321e632a65f9c9496
...
$ ./mvnw 
-Dtest=org.apache.ratis.server.simulation.TestRaftReconfigurationWithSimulatedRpc#testReconfTwice
 test
...
ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[53,37]
 error: package org.pastalab.fray.core.command does not exist
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[54,39]
 error: package org.pastalab.fray.core.scheduler does not exist
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[55,37]
 error: package org.pastalab.fray.junit.junit5 does not exist
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[56,49]
 error: package org.pastalab.fray.junit.junit5.annotations does not exist
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[75,12]
 error: cannot find symbol
  symbol: class FrayTestExtension
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[324,3]
 error: cannot find symbol
  symbol:   class FrayTest
  location: class RaftReconfigurationBaseTest<CLUSTER>
  where CLUSTER is a type-variable:
    CLUSTER extends MiniRaftCluster declared in class 
RaftReconfigurationBaseTest
[ERROR] 
/Users/szetszwo/ratis/ratis-fork/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java:[326,22]
 error: cannot find symbol
  symbol:   class RandomScheduler
  location: class RaftReconfigurationBaseTest<CLUSTER>
  where CLUSTER is a type-variable:
    CLUSTER extends MiniRaftCluster declared in class 
RaftReconfigurationBaseTest
[INFO] 7 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache Ratis 3.3.0-SNAPSHOT:
[INFO]
[INFO] Apache Ratis ....................................... SUCCESS [ 19.633 s]
[INFO] Apache Ratis Documentation ......................... SUCCESS [ 17.424 s]
[INFO] Apache Ratis Protocols ............................. SUCCESS [ 20.619 s]
[INFO] Apache Ratis Common ................................ SUCCESS [ 19.013 s]
[INFO] Apache Ratis Client ................................ SUCCESS [ 17.624 s]
[INFO] Apache Ratis Server API ............................ SUCCESS [ 17.388 s]
[INFO] Apache Ratis Metrics API ........................... SUCCESS [ 17.287 s]
[INFO] Apache Ratis Metrics Default Implementation ........ SUCCESS [ 18.155 s]
[INFO] Apache Ratis Server ................................ FAILURE [ 18.508 s]
[INFO] Apache Ratis - Resource Bundle ..................... SKIPPED
[INFO] Apache Ratis gRPC Support .......................... SKIPPED
[INFO] Apache Ratis Netty Support ......................... SKIPPED
[INFO] Apache Ratis Shell ................................. SKIPPED
[INFO] Apache Ratis Test .................................. SKIPPED
[INFO] Apache Ratis Tools ................................. SKIPPED
[INFO] Apache Ratis Examples .............................. SKIPPED
[INFO] Apache Ratis Metrics Dropwizard 3 Implementation ... SKIPPED
[INFO] Apache Ratis Project Assembly ...................... SKIPPED
[INFO] Apache Ratis BOM ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:47 min
[INFO] Finished at: 2026-05-18T22:48:23-07:00
[INFO] ------------------------------------------------------------------------
...
{code}

> Improve the IllegalStateException message from LeaderStateImpl.updateCommit
> ---------------------------------------------------------------------------
>
>                 Key: RATIS-2485
>                 URL: https://issues.apache.org/jira/browse/RATIS-2485
>             Project: Ratis
>          Issue Type: Improvement
>          Components: Leader
>            Reporter: Ao Li
>            Assignee: Ao Li
>            Priority: Major
>         Attachments: log.txt
>
>
> I saw the following exception:
> {code:java}
> java.lang.IllegalStateException: n1@group-ABB3109A44C1-SegmentedRaftLog is 
> expected to be opened but it is CLOSED
>       at 
> org.apache.ratis.util.OpenCloseState.assertOpen(OpenCloseState.java:63)
>       at 
> org.apache.ratis.server.raftlog.RaftLogBase.checkLogState(RaftLogBase.java:112)
>       at 
> org.apache.ratis.server.raftlog.RaftLogBase.appendMetadataImpl(RaftLogBase.java:220)
>       at 
> org.apache.ratis.server.raftlog.RaftLogBase.lambda$appendMetadata$4(RaftLogBase.java:216)
>       at 
> org.apache.ratis.server.raftlog.RaftLogSequentialOps$Runner.runSequentially(RaftLogSequentialOps.java:69)
>       at 
> org.apache.ratis.server.raftlog.RaftLogBase.appendMetadata(RaftLogBase.java:216)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl.logMetadata(LeaderStateImpl.java:982)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl.updateCommit(LeaderStateImpl.java:960)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl.updateCommit(LeaderStateImpl.java:975)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl.lambda$updateCommit$18(LeaderStateImpl.java:902)
>       at java.base/java.util.Optional.ifPresent(Optional.java:178)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl.updateCommit(LeaderStateImpl.java:902)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl$StateUpdateEvent.execute(LeaderStateImpl.java:123)
>       at 
> org.apache.ratis.server.impl.LeaderStateImpl$EventProcessor.run(LeaderStateImpl.java:767)
> Caused by: org.apache.ratis.util.OpenCloseState$CloseTrace: Close 
> n1@group-ABB3109A44C1-SegmentedRaftLog
>       at 
> org.apache.ratis.util.OpenCloseState.lambda$close$1(OpenCloseState.java:109)
>       at 
> java.base/java.util.concurrent.atomic.AtomicReference.getAndUpdate(AtomicReference.java:184)
>       at org.apache.ratis.util.OpenCloseState.close(OpenCloseState.java:109)
>       at 
> org.apache.ratis.server.raftlog.RaftLogBase.close(RaftLogBase.java:380)
>       at 
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.close(SegmentedRaftLog.java:528)
>       at org.apache.ratis.server.impl.ServerState.close(ServerState.java:434)
>       at 
> org.apache.ratis.server.impl.RaftServerImpl.lambda$close$1(RaftServerImpl.java:535)
>       at 
> org.apache.ratis.util.LifeCycle.lambda$checkStateAndClose$7(LifeCycle.java:306)
>       at 
> org.apache.ratis.util.LifeCycle.checkStateAndClose(LifeCycle.java:326)
>       at 
> org.apache.ratis.util.LifeCycle.checkStateAndClose(LifeCycle.java:304)
>       at 
> org.apache.ratis.server.impl.RaftServerImpl.close(RaftServerImpl.java:512)
>       at 
> org.apache.ratis.server.impl.RaftServerProxy$ImplMap.close(RaftServerProxy.java:136)
>       at 
> org.apache.ratis.server.impl.RaftServerProxy$ImplMap.lambda$close$0(RaftServerProxy.java:123)
>       at 
> org.apache.ratis.util.ConcurrentUtils.accept(ConcurrentUtils.java:203)
>       at 
> org.apache.ratis.util.ConcurrentUtils.lambda$null$4(ConcurrentUtils.java:182)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
>       at java.base/java.lang.Thread.run(Thread.java:1474)
> {code}
> with the following scenario:
> Thread 1:
> Leader shutdown -> SegmentedRaftLog.close()
> Thread 2:
> LeaderStateImpl$EventProcessor.run() -> StateUpdateEvent.execute() -> 
> updateCommit() -> logMetadata() -> RaftLogBase.appendMetadata()
> I did some searching before creating this issue, but I didn’t find any 
> mention that the exception can be thrown in the updateCommit() method.
> Sorry in advance if this is a dup or expected behavior.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to