Github user chtyim commented on a diff in the pull request: https://github.com/apache/incubator-tephra/pull/53#discussion_r138565447 --- Diff: tephra-core/src/main/java/org/apache/tephra/persist/AbstractTransactionLog.java --- @@ -165,26 +203,36 @@ private void sync() throws IOException { // prevent writer being dereferenced tmpWriter = writer; - List<Entry> currentPending = getPendingWrites(); - if (!currentPending.isEmpty()) { - tmpWriter.commitMarker(currentPending.size()); - } - - // write out all accumulated entries to log. - for (Entry e : currentPending) { - tmpWriter.append(e); - entryCount++; - latestSeq = Math.max(latestSeq, e.getKey().get()); + Entry[] currentPending = getPendingWrites(); + if (currentPending != null) { + entryCount = currentPending.length; + startTimerIfNeeded(tmpWriter, entryCount); + tmpWriter.commitMarker(entryCount); + for (Entry e : currentPending) { + tmpWriter.append(e); + latestSeq = Math.max(latestSeq, e.getKey().get()); + } + writtenUpTo.set(latestSeq); --- End diff -- We actually don't need this. Just have the `latestSeq` be a `volatile long` field, and have it updated here to the latest seq number in the current entry array. Then in the "sync" synchronize block below, the value can be set into `syncedUpTo`.
---