Yan Zhao created ZOOKEEPER-4813:
-----------------------------------

             Summary: Make zookeeper start successfully when the last log file 
is dirty during the restore progress
                 Key: ZOOKEEPER-4813
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4813
             Project: ZooKeeper
          Issue Type: Improvement
          Components: server
    Affects Versions: 3.9.1
            Reporter: Yan Zhao
            Assignee: Yan Zhao
             Fix For: 3.9.2


When the zookeeper restarts, it will restore the data from the last valid 
snapshot file, and replay txn log to append data.
But if the last log file is empty due to some reason, the restore will fail, 
not make the zookeeper can not restart.



{noformat}
14:12:16.023 [main] INFO  org.apache.zookeeper.server.persistence.SnapStream - 
Invalid snapshot snapshot.188700025d87. len = 761554294, byte = 45
14:12:16.024 [main] INFO  org.apache.zookeeper.server.persistence.FileSnap - 
Reading snapshot /pulsar/data/zookeeper/version-2/snapshot.188700025a05
14:12:17.350 [main] INFO  org.apache.zookeeper.server.DataTree - The digest in 
the snapshot has digest version of 2, with zxid as 0x188700025b07, and digest 
value as 510776662607117
14:12:17.492 [main] ERROR org.apache.zookeeper.server.quorum.QuorumPeer - 
Unable to load database on disk
java.io.EOFException: null
        at java.io.DataInputStream.readInt(DataInputStream.java:386) ~[?:?]
        at 
org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:96) 
~[org.apache.zookeeper-zookeeper-jute-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileHeader.deserialize(FileHeader.java:67)
 ~[org.apache.zookeeper-zookeeper-jute-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.inStreamCreated(FileTxnLog.java:725)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.createInputArchive(FileTxnLog.java:743)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.goToNextLog(FileTxnLog.java:711)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:792)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.fastForwardFromEdits(FileTxnSnapLog.java:361)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.lambda$restore$0(FileTxnSnapLog.java:267)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:312)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:288) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:1149)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:1135) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:229)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:137)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
14:12:17.502 [main] INFO  
org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider - Shutdown 
executor service with timeout 1000
14:12:17.508 [main] INFO  org.eclipse.jetty.server.AbstractConnector - Stopped 
ServerConnector@2484f433{HTTP/1.1, (http/1.1)}{0.0.0.0:8000}
14:12:17.510 [main] INFO  org.eclipse.jetty.server.handler.ContextHandler - 
Stopped o.e.j.s.ServletContextHandler@59a67c3a{/,null,STOPPED}
14:12:17.515 [main] ERROR org.apache.zookeeper.server.quorum.QuorumPeerMain - 
Unexpected exception, exiting abnormally
java.lang.RuntimeException: Unable to run quorum server 
        at 
org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:1204)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:1135) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:229)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:137)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
Caused by: java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:386) ~[?:?]
        at 
org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:96) 
~[org.apache.zookeeper-zookeeper-jute-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileHeader.deserialize(FileHeader.java:67)
 ~[org.apache.zookeeper-zookeeper-jute-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.inStreamCreated(FileTxnLog.java:725)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.createInputArchive(FileTxnLog.java:743)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.goToNextLog(FileTxnLog.java:711)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:792)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.fastForwardFromEdits(FileTxnSnapLog.java:361)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.lambda$restore$0(FileTxnSnapLog.java:267)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:312)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:288) 
~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        at 
org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:1149)
 ~[org.apache.zookeeper-zookeeper-3.9.1.jar:3.9.1]
        ... 4 more
{noformat}





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

Reply via email to