You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by fp...@apache.org on 2012/05/08 09:35:47 UTC

svn commit: r1335367 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java

Author: fpj
Date: Tue May  8 07:35:47 2012
New Revision: 1335367

URL: http://svn.apache.org/viewvc?rev=1335367&view=rev
Log:
BOOKKEEPER-229: Deleted entry log files would be garbage collected again and again. (sijie via fpj)


Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1335367&r1=1335366&r2=1335367&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Tue May  8 07:35:47 2012
@@ -94,6 +94,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-232: AsyncBK tests failing (umamaheswararao via ivank)
 
+	BOOKKEEPER-229: Deleted entry log files would be garbage collected again and again. (sijie via fpj)
+
       hedwig-client/
 
         BOOKKEEPER-217: NPE in hedwig client when enable DEBUG (sijie via ivank)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java?rev=1335367&r1=1335366&r2=1335367&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java Tue May  8 07:35:47 2012
@@ -186,11 +186,7 @@ public class GarbageCollectorThread exte
 
             // Extract all of the ledger ID's that comprise all of the entry logs
             // (except for the current new one which is still being written to).
-            try {
-                entryLogMetaMap = extractMetaFromEntryLogs(entryLogMetaMap);
-            } catch (IOException ie) {
-                LOG.warn("Exception when extracting entry log meta from entry logs : ", ie);
-            }
+            entryLogMetaMap = extractMetaFromEntryLogs(entryLogMetaMap);
 
             // gc inactive/deleted ledgers
             doGcLedgers();
@@ -457,8 +453,7 @@ public class GarbageCollectorThread exte
      *          Existing EntryLogs to Meta
      * @throws IOException
      */
-    protected Map<Long, EntryLogMetadata> extractMetaFromEntryLogs(Map<Long, EntryLogMetadata> entryLogMetaMap)
-            throws IOException {
+    protected Map<Long, EntryLogMetadata> extractMetaFromEntryLogs(Map<Long, EntryLogMetadata> entryLogMetaMap) {
         // Extract it for every entry log except for the current one.
         // Entry Log ID's are just a long value that starts at 0 and increments
         // by 1 when the log fills up and we roll to a new one.
@@ -470,9 +465,14 @@ public class GarbageCollectorThread exte
             }
             LOG.info("Extracting entry log meta from entryLogId: " + entryLogId);
 
-            // Read through the entry log file and extract the entry log meta
-            entryLogMetaMap.put(entryLogId,
-                                extractMetaFromEntryLog(entryLogger, entryLogId));
+            try {
+                // Read through the entry log file and extract the entry log meta
+                EntryLogMetadata entryLogMeta = extractMetaFromEntryLog(entryLogger, entryLogId);
+                entryLogMetaMap.put(entryLogId, entryLogMeta);
+            } catch (IOException e) {
+                LOG.warn("Premature exception when processing " + entryLogId +
+                         "recovery will take care of the problem", e);
+            }
         }
         return entryLogMetaMap;
     }
@@ -481,16 +481,10 @@ public class GarbageCollectorThread exte
             throws IOException {
         EntryLogMetadata entryLogMeta = new EntryLogMetadata(entryLogId);
         ExtractionScanner scanner = new ExtractionScanner(entryLogMeta);
-        try {
-            // Read through the entry log file and extract the entry log meta
-            entryLogger.scanEntryLog(entryLogId, scanner);
-            LOG.info("Retrieved entry log meta data entryLogId: "
-                     + entryLogId + ", meta: " + entryLogMeta);
-        } catch(IOException e) {
-            LOG.warn("Premature exception when processing " + entryLogId +
-                     "recovery will take care of the problem", e);
-        }
-
+        // Read through the entry log file and extract the entry log meta
+        entryLogger.scanEntryLog(entryLogId, scanner);
+        LOG.info("Retrieved entry log meta data entryLogId: "
+                 + entryLogId + ", meta: " + entryLogMeta);
         return entryLogMeta;
     }
 }

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java?rev=1335367&r1=1335366&r2=1335367&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java Tue May  8 07:35:47 2012
@@ -30,6 +30,7 @@ import java.util.HashMap;
 import junit.framework.TestCase;
 
 import org.apache.bookkeeper.bookie.GarbageCollectorThread.EntryLogMetadata;
+import org.apache.bookkeeper.bookie.GarbageCollectorThread.ExtractionScanner;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.junit.After;
 import org.junit.Before;
@@ -71,8 +72,14 @@ public class EntryLogTest extends TestCa
         // now see which ledgers are in the log
         logger = new EntryLogger(conf);
 
-        EntryLogMetadata meta =
-            GarbageCollectorThread.extractMetaFromEntryLog(logger, 0L);
+        EntryLogMetadata meta = new EntryLogMetadata(0L);
+        ExtractionScanner scanner = new ExtractionScanner(meta);
+
+        try {
+            logger.scanEntryLog(0L, scanner);
+            fail("Should not reach here!");
+        } catch (IOException ie) {
+        }
 
         LOG.info("Extracted Meta From Entry Log {}", meta);
         assertNotNull(meta.ledgersMap.get(1L));