[ https://issues.apache.org/jira/browse/ZOOKEEPER-2332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15046409#comment-15046409 ]
Chris Nauroth commented on ZOOKEEPER-2332: ------------------------------------------ Yes, something similar to {{AtomicFileOutputStream}} would work well. The current implementation of {{AtomicFileOutputStream}} isn't an exact fit for this, because the "commit" is tightly coupled to closing the file. In this case, we'd want to commit (atomically rename) without closing the file, so that we can keep appending transactions to the open log file. > Zookeeper failed to start for empty txn log > ------------------------------------------- > > Key: ZOOKEEPER-2332 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2332 > Project: ZooKeeper > Issue Type: Bug > Affects Versions: 3.4.6 > Reporter: Liu Shaohui > Priority: Critical > Fix For: 3.6.0 > > Attachments: ZOOKEEPER-2332-v001.diff > > > We found that the zookeeper server with version 3.4.6 failed to start for > there is a empty txn log in log dir. > I think we should skip the empty log file during restoring the datatree. > Any suggestion? > {code} > 2015-11-27 19:16:16,887 [myid:] - ERROR [main:ZooKeeperServerMain@63] - > Unexpected exception, exiting abnormally > java.io.EOFException > at java.io.DataInputStream.readInt(DataInputStream.java:392) > at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63) > at > org.apache.zookeeper.server.persistence.FileHeader.deserialize(FileHeader.java:64) > at > org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.inStreamCreated(FileTxnLog.java:576) > at > org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.createInputArchive(FileTxnLog.java:595) > at > org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.goToNextLog(FileTxnLog.java:561) > at > org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:643) > at > org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:158) > at org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223) > at > org.apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.java:272) > at > org.apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.java:399) > at > org.apache.zookeeper.server.NIOServerCnxnFactory.startup(NIOServerCnxnFactory.java:122) > at > org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:113) > at > org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:86) > at > org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:52) > at > org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116) > at > org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)