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 2012/07/04 16:17:30 UTC

svn commit: r1357277 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java

Author: ivank
Date: Wed Jul  4 14:17:30 2012
New Revision: 1357277

URL: http://svn.apache.org/viewvc?rev=1357277&view=rev
Log:
BOOKKEEPER-324: Flakeyness in LedgerCreateDeleteTest (ivank)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1357277&r1=1357276&r2=1357277&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed Jul  4 14:17:30 2012
@@ -30,6 +30,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-280: LedgerHandle.addEntry() should return an entryId (mmerli via ivank)
 
+        BOOKKEEPER-324: Flakeyness in LedgerCreateDeleteTest (ivank)
+
       hedwig-client:
 
         BOOKKEEPER-274: Hedwig cpp client library should not link to cppunit which is just used for test. (sijie via ivank)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java?rev=1357277&r1=1357276&r2=1357277&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java Wed Jul  4 14:17:30 2012
@@ -410,9 +410,10 @@ public class Bookie extends Thread {
         LOG.debug("I'm starting a bookie with journal directory " + journalDirectory.getName());
         // start bookie thread
         super.start();
-        syncThread.start();
 
         ledgerStorage.start();
+
+        syncThread.start();
         // set running here.
         // since bookie server use running as a flag to tell bookie server whether it is alive
         // if setting it in bookie thread, the watcher might run before bookie thread.
@@ -595,9 +596,6 @@ public class Bookie extends Thread {
                 // mark bookie as in shutting down progress
                 shuttingdown = true;
 
-                // Shutdown the EntryLogger which has the GarbageCollector Thread running
-                ledgerStorage.shutdown();
-
                 // Shutdown the ZK client
                 if(zk != null) zk.close();
                 // Shutdown journal
@@ -605,6 +603,9 @@ public class Bookie extends Thread {
                 this.join();
                 syncThread.shutdown();
 
+                // Shutdown the EntryLogger which has the GarbageCollector Thread running
+                ledgerStorage.shutdown();
+
                 // close Ledger Manager
                 try {
                     activeLedgerManager.close();

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java?rev=1357277&r1=1357276&r2=1357277&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java Wed Jul  4 14:17:30 2012
@@ -692,11 +692,13 @@ public class LedgerCacheImpl implements 
 
     // evict file info if necessary
     private void evictFileInfoIfNecessary() throws IOException {
-        if (openLedgers.size() > openFileLimit) {
-            long ledgerToRemove = openLedgers.removeFirst();
-            LOG.info("Ledger {} is evicted from file info cache.",
-                     ledgerToRemove);
-            fileInfoCache.remove(ledgerToRemove).close(true);
+        synchronized (fileInfoCache) {
+            if (openLedgers.size() > openFileLimit) {
+                long ledgerToRemove = openLedgers.removeFirst();
+                LOG.info("Ledger {} is evicted from file info cache.",
+                         ledgerToRemove);
+                fileInfoCache.remove(ledgerToRemove).close(true);
+            }
         }
     }
 
@@ -778,11 +780,14 @@ public class LedgerCacheImpl implements 
 
     @Override
     public void close() throws IOException {
-        for (Entry<Long, FileInfo> fileInfo : fileInfoCache.entrySet()) {
-            FileInfo value = fileInfo.getValue();
-            if (value != null) {
-                value.close(true);
+        synchronized (fileInfoCache) {
+            for (Entry<Long, FileInfo> fileInfo : fileInfoCache.entrySet()) {
+                FileInfo value = fileInfo.getValue();
+                if (value != null) {
+                    value.close(true);
+                }
             }
+            fileInfoCache.clear();
         }
     }
 }