Github user breed commented on a diff in the pull request:
https://github.com/apache/zookeeper/pull/560#discussion_r200716591
--- Diff:
src/java/main/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java ---
@@ -399,8 +399,30 @@ public void save(DataTree dataTree,
File snapshotFile = new File(snapDir,
Util.makeSnapshotName(lastZxid));
LOG.info("Snapshotting: 0x{} to {}", Long.toHexString(lastZxid),
snapshotFile);
- snapLog.serialize(dataTree, sessionsWithTimeouts, snapshotFile,
syncSnap);
-
+ try {
+ snapLog.serialize(dataTree, sessionsWithTimeouts,
snapshotFile, syncSnap);
+ } catch (IOException e) {
+ if (snapshotFile.length() == 0) {
--- End diff --
this seems extra safe. i'm wondering if perhaps we should always delete the
snapshot file on an exception. the snapshot file probably will not be valid if
an exception occurred. right?
---