[ https://issues.apache.org/jira/browse/ZOOKEEPER-3644?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andor Molnar resolved ZOOKEEPER-3644. ------------------------------------- Fix Version/s: 3.7.0 3.5.7 3.6.0 Resolution: Fixed Issue resolved by pull request 1182 [https://github.com/apache/zookeeper/pull/1182] > Data loss after upgrading standalone ZK server 3.4.14 to 3.5.6 with > snapshot.trust.empty=true > --------------------------------------------------------------------------------------------- > > Key: ZOOKEEPER-3644 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3644 > Project: ZooKeeper > Issue Type: Bug > Components: server > Affects Versions: 3.5.6 > Reporter: Manikumar > Assignee: Michael Han > Priority: Blocker > Labels: pull-request-available > Fix For: 3.6.0, 3.5.7, 3.7.0 > > Time Spent: 1h 50m > Remaining Estimate: 0h > > We have tried to upgrade single node *standalone* ZK server from 3.4.14 to > 3.5.6. There were no snapshot files, so as suggested in ZOOKEEPER-3056, we > have set snapshot.trust.empty to true. After server startup, when we tried to > list the znodes, we found that znodes are missing. > Steps to reproduce: > # Start a single node ZK 3.4.14 server and create few znodes > # Upgrade the server to 3.5.6 with snapshot.trust.empty=true config > # try to list the znodes using zkShell > Looking into the [source > code|https://github.com/apache/zookeeper/blob/release-3.5.6/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java#L224], > looks like we are not reading transaction log if there are no snapshot files > and snapshot.trust.empty is set to true. > ZK 3.5.6 logs: > {quote}[2019-12-07 12:13:35,007] INFO Created server with tickTime 3000 > minSessionTimeout 6000 maxSessionTimeout 60000 datadir > /var/lib/zookeeper/version-2 snapdir /var/lib/zookeeper/version-2 > (org.apache.zookeeper.server.ZooKeeperServer) > [2019-12-07 12:13:35,012] INFO Using > org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory > (org.apache.zookeeper.server.ServerCnxnFactory) > [2019-12-07 12:13:35,014] INFO Configuring NIO connection handler with 10s > sessionless connection timeout, 1 selector thread(s), 12 worker threads, and > 64 kB direct buffers. (org.apache > .zookeeper.server.NIOServerCnxnFactory) > [2019-12-07 12:13:35,017] INFO binding to port > [0.0.0.0/0.0.0.0:2181|http://0.0.0.0/0.0.0.0:2181] > (org.apache.zookeeper.server.NIOServerCnxnFactory) > [2019-12-07 12:13:35,027] INFO zookeeper.snapshotSizeFactor = 0.33 > (org.apache.zookeeper.server.ZKDatabase) > [2019-12-07 12:13:35,029] DEBUG Created new input stream > /var/lib/zookeeper/version-2/log.1 > (org.apache.zookeeper.server.persistence.FileTxnLog) > [2019-12-07 12:13:35,031] DEBUG Created new input archive > /var/lib/zookeeper/version-2/log.1 > (org.apache.zookeeper.server.persistence.FileTxnLog) > [2019-12-07 12:13:35,035] DEBUG EOF exception java.io.EOFException: Failed > to read /var/lib/zookeeper/version-2/log.1 > (org.apache.zookeeper.server.persistence.FileTxnLog) > [2019-12-07 12:13:35,035] WARN No snapshot found, but there are log entries. > This should only be allowed during upgrading. > (org.apache.zookeeper.server.persistence.FileTxnSnapLog) > [2019-12-07 12:13:35,035] INFO Snapshotting: 0x0 to > /var/lib/zookeeper/version-2/snapshot.0 > (org.apache.zookeeper.server.persistence.FileTxnSnapLog) > [2019-12-07 12:13:35,036] INFO Snapshotting: 0x0 to > /var/lib/zookeeper/version-2/snapshot.0 > (org.apache.zookeeper.server.persistence.FileTxnSnapLog) > [2019-12-07 12:13:35,050] INFO Using checkIntervalMs=60000 > maxPerMinute=10000 (org.apache.zookeeper.server.ContainerManager) > [2019-12-07 12:15:07,137] DEBUG Accepted socket connection from > /[127.0.0.1:38888|http://127.0.0.1:38888/] > (org.apache.zookeeper.server.NIOServerCnxnFactory) > [2019-12-07 12:15:07,144] DEBUG Session establishment request from client > /[127.0.0.1:38888|http://127.0.0.1:38888/] client's lastZxid is 0x0 > (org.apache.zookeeper.server.ZooKeeperServer) > [2019-12-07 12:15:07,145] DEBUG Adding session 0x100006e15fb0000 > (org.apache.zookeeper.server.SessionTrackerImpl) > [2019-12-07 12:15:07,148] TRACE SessionTrackerImpl — Adding session > 0x100006e15fb0000 30000 (org.apache.zookeeper.server.SessionTrackerImpl) > [2019-12-07 12:15:07,149] DEBUG Client attempting to establish new session: > session = 0x100006e15fb0000, zxid = 0x0, timeout = 30000, address = > /[127.0.0.1:38888|http://127.0.0.1:38888/] > (org.apache.zookeeper.server.ZooKeeperServer) > [2019-12-07 12:15:07,155] TRACE :Psessionid:0x100006e15fb0000 > type:createSession cxid:0x0 zxid:0xfffffffffffffffe txntype:unknown > reqpath:n/a (org.apache.zookeeper.server.PrepRequestProcessor) > [2019-12-07 12:15:07,155] TRACE SessionTrackerImpl — Existing session > 0x100006e15fb0000 30000 (org.apache.zookeeper.server.SessionTrackerImpl) > [2019-12-07 12:15:07,155] INFO Creating new log file: log.1 > (org.apache.zookeeper.server.persistence.FileTxnLog) > [2019-12-07 12:15:07,170] DEBUG Processing request:: > sessionid:0x100006e15fb0000 type:createSession cxid:0x0 zxid:0x1 txntype:-10 > reqpath:n/a (org.apache.zookeeper.server.FinalRequestProcessor) > {quote} -- This message was sent by Atlassian Jira (v8.3.4#803005)