You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by iv...@apache.org on 2013/10/02 11:52:26 UTC
svn commit: r1528399 - in /zookeeper/bookkeeper/branches/branch-4.2:
CHANGES.txt
bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java
bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
Author: ivank
Date: Wed Oct 2 09:52:26 2013
New Revision: 1528399
URL: http://svn.apache.org/r1528399
Log:
BOOKKEEPER-685: Race in compaction algorithm from BOOKKEEPER-664 (ivank)
Modified:
zookeeper/bookkeeper/branches/branch-4.2/CHANGES.txt
zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java
zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
Modified: zookeeper/bookkeeper/branches/branch-4.2/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/branches/branch-4.2/CHANGES.txt?rev=1528399&r1=1528398&r2=1528399&view=diff
==============================================================================
--- zookeeper/bookkeeper/branches/branch-4.2/CHANGES.txt (original)
+++ zookeeper/bookkeeper/branches/branch-4.2/CHANGES.txt Wed Oct 2 09:52:26 2013
@@ -84,6 +84,8 @@ Release 4.2.2 - 2013-09-10
BOOKKEEPER-627: LedgerDirsMonitor is missing thread name (rakeshr via ivank)
+ BOOKKEEPER-685: Race in compaction algorithm from BOOKKEEPER-664 (ivank)
+
hedwig-server:
BOOKKEEPER-579: TestSubAfterCloseSub was put in a wrong package (sijie via ivank)
Modified: zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java?rev=1528399&r1=1528398&r2=1528399&view=diff
==============================================================================
--- zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java (original)
+++ zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryLogger.java Wed Oct 2 09:52:26 2013
@@ -118,9 +118,9 @@ public class EntryLogger {
*/
static interface EntryLogListener {
/**
- * Rotate a new entry log to write.
+ * Callback when entry log is flushed.
*/
- public void onRotateEntryLog();
+ public void onEntryLogFlushed();
}
/**
@@ -350,7 +350,7 @@ public class EntryLogger {
}
somethingWritten = false;
for (EntryLogListener listener: listeners) {
- listener.onRotateEntryLog();
+ listener.onEntryLogFlushed();
}
}
Modified: zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java?rev=1528399&r1=1528398&r2=1528399&view=diff
==============================================================================
--- zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java (original)
+++ zookeeper/bookkeeper/branches/branch-4.2/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java Wed Oct 2 09:52:26 2013
@@ -129,8 +129,8 @@ public class GarbageCollectorThread exte
long entryId = entry.getLong();
entry.rewind();
- flushed.set(false);
long newoffset = entryLogger.addEntry(ledgerId, entry);
+ flushed.set(false);
offsets.add(new Offset(ledgerId, entryId, newoffset));
}
}
@@ -141,7 +141,7 @@ public class GarbageCollectorThread exte
Object flushLock = new Object();
@Override
- public void onRotateEntryLog() {
+ public void onEntryLogFlushed() {
synchronized (flushLock) {
flushed.set(true);
flushLock.notifyAll();
@@ -151,10 +151,14 @@ public class GarbageCollectorThread exte
synchronized private void waitEntrylogFlushed() throws IOException {
try {
synchronized (flushLock) {
- while (!flushed.get() && running) {
+ while (!flushed.get()
+ && entryLogger.isFlushRequired()
+ && running) {
flushLock.wait(1000);
}
- if (!flushed.get() && !running) {
+ if (!flushed.get()
+ && entryLogger.isFlushRequired()
+ && !running) {
throw new IOException("Shutdown before flushed");
}
}