[ 
https://issues.apache.org/jira/browse/RATIS-2485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ao Li updated RATIS-2485:
-------------------------
    Description: 
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.

  was:
I saw the following exception:


{code:java}
│Thread: 
Thread[#3973,n1@group-ABB3109A44C1-LeaderStateImpl,5,n1@group-ABB3109A44C1]     
                                                                                
                                                           │
│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.


> IllegalStateException thrown from LeaderStateImpl.updateCommit
> --------------------------------------------------------------
>
>                 Key: RATIS-2485
>                 URL: https://issues.apache.org/jira/browse/RATIS-2485
>             Project: Ratis
>          Issue Type: Bug
>            Reporter: Ao Li
>            Priority: Major
>
> 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