You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2014/07/30 11:39:53 UTC

svn commit: r1614596 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Author: alexparvulescu
Date: Wed Jul 30 09:39:53 2014
New Revision: 1614596

URL: http://svn.apache.org/r1614596
Log:
OAK-2001 TarMk compaction can still cause repository growth
 - prevented ConcurrentModificationException by wrapping in an synchronized block

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1614596&r1=1614595&r2=1614596&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Wed Jul 30 09:39:53 2014
@@ -356,14 +356,17 @@ public class FileStore implements Segmen
                     }
                 }
             }
-            // remove all obsolete tar generations
-            Iterator<File> iterator = toBeRemoved.iterator();
-            while (iterator.hasNext()) {
-                File file = iterator.next();
-                log.debug("TarMK GC: Attempting to remove old file {}", file);
-                if (!file.exists() || file.delete()) {
-                    log.debug("TarMK GC: Removed old file {}", file);
-                    iterator.remove();
+            synchronized (this) {
+                // remove all obsolete tar generations
+                Iterator<File> iterator = toBeRemoved.iterator();
+                while (iterator.hasNext()) {
+                    File file = iterator.next();
+                    log.debug("TarMK GC: Attempting to remove old file {}",
+                            file);
+                    if (!file.exists() || file.delete()) {
+                        log.debug("TarMK GC: Removed old file {}", file);
+                        iterator.remove();
+                    }
                 }
             }
         }