You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@zookeeper.apache.org by GitBox <gi...@apache.org> on 2019/08/30 20:49:19 UTC
[GitHub] [zookeeper] enixon commented on a change in pull request #1069:
ZOOKEEPER-3056: Fails to load database with missing snapshot file but with
valid transaction log file.
enixon commented on a change in pull request #1069: ZOOKEEPER-3056: Fails to load database with missing snapshot file but with valid transaction log file.
URL: https://github.com/apache/zookeeper/pull/1069#discussion_r319670645
##########
File path: zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java
##########
@@ -232,11 +240,19 @@ public long restore(DataTree dt, Map<Long, Integer> sessions, PlayBackListener l
} else {
trustEmptyDB = autoCreateDB;
}
+
if (-1L == deserializeResult) {
/* this means that we couldn't find any snapshot, so we need to
* initialize an empty database (reported in ZOOKEEPER-2325) */
if (txnLog.getLastLoggedZxid() != -1) {
- throw new IOException("No snapshot found, but there are log entries. " + "Something is broken!");
+ // ZOOKEEPER-3056: provides an escape hatch for users upgrading
+ // from old versions of zookeeper (3.4.x, pre 3.5.3).
+ if (!trustEmptySnapshot) {
+ throw new IOException(EMPTY_SNAPSHOT_WARNING + "Something is broken!");
+ } else {
+ LOG.warn(EMPTY_SNAPSHOT_WARNING + "This should only be allowed during upgrading.");
+ trustEmptySnapshot = false;
+ }
}
if (trustEmptyDB) {
Review comment:
If `trustEmptyDB` is not set does the code (1) load the transaction log and (2) create a snapshot? With the second question, can we have a scenario where clearing `trustEmptySnapshot` causes the Peer to shutdown because it cannot find a snapshot on a second pass?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services