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 mr...@apache.org on 2017/02/27 12:16:34 UTC

svn commit: r1784541 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java

Author: mreutegg
Date: Mon Feb 27 12:16:33 2017
New Revision: 1784541

URL: http://svn.apache.org/viewvc?rev=1784541&view=rev
Log:
OAK-5794: Track time to check GC candidate nodes

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java?rev=1784541&r1=1784540&r2=1784541&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java Mon Feb 27 12:16:33 2017
@@ -122,6 +122,7 @@ public class VersionGarbageCollector {
         int intermediateSplitDocGCCount;
         int updateResurrectedGCCount;
         final Stopwatch collectDeletedDocs = Stopwatch.createUnstarted();
+        final Stopwatch checkDeletedDocs = Stopwatch.createUnstarted();
         final Stopwatch deleteDeletedDocs = Stopwatch.createUnstarted();
         final Stopwatch collectAndDeleteSplitDocs = Stopwatch.createUnstarted();
         final Stopwatch sortDocIds = Stopwatch.createUnstarted();
@@ -137,6 +138,7 @@ public class VersionGarbageCollector {
                     ", splitDocGCCount=" + splitDocGCCount +
                     ", intermediateSplitDocGCCount=" + intermediateSplitDocGCCount +
                     ", timeToCollectDeletedDocs=" + collectDeletedDocs +
+                    ", timeToCheckDeletedDocs=" + checkDeletedDocs +
                     ", timeToSortDocIds=" + sortDocIds +
                     ", timeTakenToDeleteDeletedDocs=" + deleteDeletedDocs +
                     ", timeTakenToCollectAndDeleteSplitDocs=" + collectAndDeleteSplitDocs +
@@ -147,6 +149,7 @@ public class VersionGarbageCollector {
     private enum GCPhase {
         NONE,
         COLLECTING,
+        CHECKING,
         DELETING,
         SORTING,
         SPLITS_CLEANUP,
@@ -171,6 +174,7 @@ public class VersionGarbageCollector {
             this.elapsed = Stopwatch.createStarted();
             this.watches.put(GCPhase.NONE, Stopwatch.createStarted());
             this.watches.put(GCPhase.COLLECTING, stats.collectDeletedDocs);
+            this.watches.put(GCPhase.CHECKING, stats.checkDeletedDocs);
             this.watches.put(GCPhase.DELETING, stats.deleteDeletedDocs);
             this.watches.put(GCPhase.SORTING, stats.sortDocIds);
             this.watches.put(GCPhase.SPLITS_CLEANUP, stats.collectAndDeleteSplitDocs);
@@ -310,7 +314,10 @@ public class VersionGarbageCollector {
                                 log.info("Iterated through {} documents so far. {} found to be deleted",
                                         docsTraversed, gc.getNumDocuments());
                             }
-                            gc.possiblyDeleted(doc);
+                            if (phases.start(GCPhase.CHECKING)) {
+                                gc.possiblyDeleted(doc);
+                                phases.stop(GCPhase.CHECKING);
+                            }
                             if (gc.hasLeafBatch()) {
                                 if (phases.start(GCPhase.DELETING)) {
                                     gc.removeLeafDocuments(phases.stats);