Repository: zookeeper
Updated Branches:
refs/heads/branch-3.4 7294f8b1b -> e4303a37a
ZOOKEEPER-2853: The lastZxidSeen in FileTxnLog.java is never being assigned.
This is a port of the same patch committed to master and branch-3.5, after resolving merge
conflicts.
Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/e4303a37
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/e4303a37
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/e4303a37
Branch: refs/heads/branch-3.4
Commit: e4303a37a813c9f1bd4cdefd9c754267b12c32b4
Parents: 7294f8b
Author: Michael Han <hanm@apache.org>
Authored: Thu Aug 3 14:02:29 2017 -0700
Committer: Michael Han <hanm@apache.org>
Committed: Thu Aug 3 14:02:29 2017 -0700
----------------------------------------------------------------------
.../server/persistence/FileTxnLog.java | 76 ++++++++++----------
1 file changed, 40 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/e4303a37/src/java/main/org/apache/zookeeper/server/persistence/FileTxnLog.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/server/persistence/FileTxnLog.java b/src/java/main/org/apache/zookeeper/server/persistence/FileTxnLog.java
index 690cfca..724b855 100644
--- a/src/java/main/org/apache/zookeeper/server/persistence/FileTxnLog.java
+++ b/src/java/main/org/apache/zookeeper/server/persistence/FileTxnLog.java
@@ -192,44 +192,48 @@ public class FileTxnLog implements TxnLog {
public synchronized boolean append(TxnHeader hdr, Record txn)
throws IOException
{
- if (hdr != null) {
- if (hdr.getZxid() <= lastZxidSeen) {
- LOG.warn("Current zxid " + hdr.getZxid()
- + " is <= " + lastZxidSeen + " for "
- + hdr.getType());
- }
- if (logStream==null) {
- if(LOG.isInfoEnabled()){
- LOG.info("Creating new log file: log." +
- Long.toHexString(hdr.getZxid()));
- }
-
- logFileWrite = new File(logDir, ("log." +
- Long.toHexString(hdr.getZxid())));
- fos = new FileOutputStream(logFileWrite);
- logStream=new BufferedOutputStream(fos);
- oa = BinaryOutputArchive.getArchive(logStream);
- FileHeader fhdr = new FileHeader(TXNLOG_MAGIC,VERSION, dbId);
- fhdr.serialize(oa, "fileheader");
- // Make sure that the magic number is written before padding.
- logStream.flush();
- currentSize = fos.getChannel().position();
- streamsToFlush.add(fos);
- }
- padFile(fos);
- byte[] buf = Util.marshallTxnEntry(hdr, txn);
- if (buf == null || buf.length == 0) {
- throw new IOException("Faulty serialization for header " +
- "and txn");
+ if (hdr == null) {
+ return false;
+ }
+
+ if (hdr.getZxid() <= lastZxidSeen) {
+ LOG.warn("Current zxid " + hdr.getZxid()
+ + " is <= " + lastZxidSeen + " for "
+ + hdr.getType());
+ } else {
+ lastZxidSeen = hdr.getZxid();
+ }
+
+ if (logStream==null) {
+ if(LOG.isInfoEnabled()){
+ LOG.info("Creating new log file: log." +
+ Long.toHexString(hdr.getZxid()));
}
- Checksum crc = makeChecksumAlgorithm();
- crc.update(buf, 0, buf.length);
- oa.writeLong(crc.getValue(), "txnEntryCRC");
- Util.writeTxnBytes(oa, buf);
-
- return true;
+
+ logFileWrite = new File(logDir, ("log." +
+ Long.toHexString(hdr.getZxid())));
+ fos = new FileOutputStream(logFileWrite);
+ logStream=new BufferedOutputStream(fos);
+ oa = BinaryOutputArchive.getArchive(logStream);
+ FileHeader fhdr = new FileHeader(TXNLOG_MAGIC,VERSION, dbId);
+ fhdr.serialize(oa, "fileheader");
+ // Make sure that the magic number is written before padding.
+ logStream.flush();
+ currentSize = fos.getChannel().position();
+ streamsToFlush.add(fos);
}
- return false;
+ padFile(fos);
+ byte[] buf = Util.marshallTxnEntry(hdr, txn);
+ if (buf == null || buf.length == 0) {
+ throw new IOException("Faulty serialization for header " +
+ "and txn");
+ }
+ Checksum crc = makeChecksumAlgorithm();
+ crc.update(buf, 0, buf.length);
+ oa.writeLong(crc.getValue(), "txnEntryCRC");
+ Util.writeTxnBytes(oa, buf);
+
+ return true;
}
/**
|