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 re...@apache.org on 2017/10/12 15:44:56 UTC
svn commit: r1811985 - in
/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document:
SplitDocumentCleanUp.java VersionGarbageCollector.java
Author: reschke
Date: Thu Oct 12 15:44:56 2017
New Revision: 1811985
URL: http://svn.apache.org/viewvc?rev=1811985&view=rev
Log:
OAK-6822: RevisionGC: measure timeToDeleteSplitDocs separately (when possible)
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/SplitDocumentCleanUp.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/SplitDocumentCleanUp.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/SplitDocumentCleanUp.java?rev=1811985&r1=1811984&r2=1811985&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/SplitDocumentCleanUp.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/SplitDocumentCleanUp.java Thu Oct 12 15:44:56 2017
@@ -75,17 +75,35 @@ public class SplitDocumentCleanUp implem
idsToBeDeleted.add(id);
// proceed to delete early if we reach DELETE_BATCH_SIZE
if (idsToBeDeleted.size() >= DELETE_BATCH_SIZE) {
- store.remove(NODES, idsToBeDeleted);
+ removeFromDocumentStore(idsToBeDeleted);
deleteCount += idsToBeDeleted.size();
idsToBeDeleted.clear();
}
}
protected int deleteSplitDocuments() {
- store.remove(NODES, idsToBeDeleted);
+ removeFromDocumentStore(idsToBeDeleted);
return idsToBeDeleted.size() + deleteCount;
}
+ private void removeFromDocumentStore(List<String> ids) {
+ try {
+ stats.deleteSplitDocs.start();
+ store.remove(Collection.NODES, ids);
+ } finally {
+ stats.deleteSplitDocs.stop();
+ }
+ }
+
+ private void removeFromDocumentStore(String id) {
+ try {
+ stats.deleteSplitDocs.start();
+ store.remove(Collection.NODES, id);
+ } finally {
+ stats.deleteSplitDocs.stop();
+ }
+ }
+
private void disconnect(NodeDocument splitDoc) {
String splitId = splitDoc.getId();
String mainId = Utils.getIdFromPath(splitDoc.getMainPath());
@@ -128,7 +146,7 @@ public class SplitDocumentCleanUp implem
&& old.getPreviousRanges().containsKey(rev)) {
// this was the last reference on an intermediate split doc
disconnect(old);
- store.remove(NODES, old.getId());
+ removeFromDocumentStore(old.getId());
stats.intermediateSplitDocGCCount++;
}
}
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java?rev=1811985&r1=1811984&r2=1811985&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java Thu Oct 12 15:44:56 2017
@@ -261,30 +261,43 @@ public class VersionGarbageCollector {
final Stopwatch checkDeletedDocs = Stopwatch.createUnstarted();
final Stopwatch deleteDeletedDocs = Stopwatch.createUnstarted();
final Stopwatch collectAndDeleteSplitDocs = Stopwatch.createUnstarted();
+ final Stopwatch deleteSplitDocs = Stopwatch.createUnstarted();
final Stopwatch sortDocIds = Stopwatch.createUnstarted();
final Stopwatch updateResurrectedDocuments = Stopwatch.createUnstarted();
long collectDeletedDocsElapsed, checkDeletedDocsElapsed, deleteDeletedDocsElapsed, collectAndDeleteSplitDocsElapsed,
- sortDocIdsElapsed, updateResurrectedDocumentsElapsed;
+ deleteSplitDocsElapsed, sortDocIdsElapsed, updateResurrectedDocumentsElapsed;
@Override
public String toString() {
String timings;
- String fmt = "timeToCollectDeletedDocs=%s, timeToCheckDeletedDocs=%s, timeToSortDocIds=%s, timeTakenToUpdateResurrectedDocs=%s, timeTakenToDeleteDeletedDocs=%s, timeTakenToCollectAndDeleteSplitDocs=%s";
+ String fmt = "timeToCollectDeletedDocs=%s, timeToCheckDeletedDocs=%s, timeToSortDocIds=%s, timeTakenToUpdateResurrectedDocs=%s, timeTakenToDeleteDeletedDocs=%s, timeTakenToCollectAndDeleteSplitDocs=%s%s";
// aggregated timings?
if (iterationCount > 0) {
+ String timeDeletingSplitDocs = "";
+ if (deleteSplitDocsElapsed > 0) {
+ timeDeletingSplitDocs = String.format(" (of which %s deleting)",
+ df.format(deleteSplitDocsElapsed, MICROSECONDS));
+ }
timings = String.format(fmt, df.format(collectDeletedDocsElapsed, MICROSECONDS),
df.format(checkDeletedDocsElapsed, MICROSECONDS), df.format(sortDocIdsElapsed, MICROSECONDS),
df.format(updateResurrectedDocumentsElapsed, MICROSECONDS),
df.format(deleteDeletedDocsElapsed, MICROSECONDS),
- df.format(collectAndDeleteSplitDocsElapsed, MICROSECONDS));
+ df.format(collectAndDeleteSplitDocsElapsed, MICROSECONDS),
+ timeDeletingSplitDocs);
} else {
+ String timeDeletingSplitDocs = "";
+ if (deleteSplitDocs.elapsed(MICROSECONDS) > 0) {
+ timeDeletingSplitDocs = String.format(" (of which %s deleting)",
+ df.format(deleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS));
+ }
timings = String.format(fmt, df.format(collectDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS),
df.format(checkDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS),
df.format(sortDocIds.elapsed(MICROSECONDS), MICROSECONDS),
df.format(updateResurrectedDocuments.elapsed(MICROSECONDS), MICROSECONDS),
df.format(deleteDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS),
- df.format(collectAndDeleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS));
+ df.format(collectAndDeleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS),
+ timeDeletingSplitDocs);
}
return "VersionGCStats{" +
@@ -316,6 +329,7 @@ public class VersionGarbageCollector {
this.checkDeletedDocsElapsed += run.checkDeletedDocsElapsed;
this.deleteDeletedDocsElapsed += run.deleteDeletedDocsElapsed;
this.collectAndDeleteSplitDocsElapsed += run.collectAndDeleteSplitDocsElapsed;
+ this.deleteSplitDocsElapsed += run.deleteSplitDocsElapsed;
this.sortDocIdsElapsed += run.sortDocIdsElapsed;
this.updateResurrectedDocumentsElapsed += run.updateResurrectedDocumentsElapsed;
} else {
@@ -324,6 +338,7 @@ public class VersionGarbageCollector {
this.checkDeletedDocsElapsed += run.checkDeletedDocs.elapsed(MICROSECONDS);
this.deleteDeletedDocsElapsed += run.deleteDeletedDocs.elapsed(MICROSECONDS);
this.collectAndDeleteSplitDocsElapsed += run.collectAndDeleteSplitDocs.elapsed(MICROSECONDS);
+ this.deleteSplitDocsElapsed += run.deleteSplitDocs.elapsed(MICROSECONDS);
this.sortDocIdsElapsed += run.sortDocIds.elapsed(MICROSECONDS);
this.updateResurrectedDocumentsElapsed += run.updateResurrectedDocuments.elapsed(MICROSECONDS);
}