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`.
---