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 da...@apache.org on 2023/11/22 06:46:42 UTC
(jackrabbit-oak) 22/44: OAK-10199 : added review comment to make minor adjustment for naming conventions and fixes
This is an automated email from the ASF dual-hosted git repository.
daim pushed a commit to branch DetailedGC/OAK-10199
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 90b715c2108290b7de43a6880a90bd3ab04548d5
Author: Rishabh Kumar <di...@adobe.com>
AuthorDate: Fri Jul 28 17:14:15 2023 +0530
OAK-10199 : added review comment to make minor adjustment for naming conventions and fixes
---
.../oak/plugins/document/NodeDocument.java | 7 +-
.../plugins/document/VersionGCRecommendations.java | 17 ++---
.../oak/plugins/document/VersionGCSupport.java | 11 ++-
.../plugins/document/VersionGarbageCollector.java | 80 ++++++++++++----------
.../document/mongo/MongoVersionGCSupport.java | 7 +-
.../plugins/document/rdb/RDBVersionGCSupport.java | 4 +-
.../document/VersionGarbageCollectorIT.java | 10 +--
7 files changed, 73 insertions(+), 63 deletions(-)
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
index 1c94d73cf1..06ea88aaa0 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
@@ -1662,7 +1662,12 @@ public final class NodeDocument extends Document {
/**
* Returns name of all the properties on this document
- * @return Set of all property names
+ * <p>
+ * Note: property names returned are escaped
+ * <p/>
+ * @return Set of all property names (escaped)
+ * @see Utils#unescapePropertyName(String)
+ * @see Utils#escapePropertyName(String)
*/
@NotNull
Set<String> getPropertyNames() {
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCRecommendations.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCRecommendations.java
index 2092844299..05ebaa44a9 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCRecommendations.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCRecommendations.java
@@ -54,7 +54,7 @@ public class VersionGCRecommendations {
private final GCMonitor gcmon;
final boolean ignoreDueToCheckPoint;
- final boolean ignoreDetailGCDueToCheckPoint;
+ final boolean ignoreDetailedGCDueToCheckPoint;
final TimeInterval scope;
final TimeInterval scopeDetailedGC;
final long maxCollect;
@@ -94,7 +94,7 @@ public class VersionGCRecommendations {
public VersionGCRecommendations(long maxRevisionAgeMs, Checkpoints checkpoints, Clock clock, VersionGCSupport vgc,
VersionGCOptions options, GCMonitor gcMonitor, final boolean detailedGCEnabled) {
boolean ignoreDueToCheckPoint = false;
- boolean ignoreDetailGCDueToCheckPoint = false;
+ boolean ignoreDetailedGCDueToCheckPoint = false;
long deletedOnceCount = 0;
long suggestedIntervalMs;
long oldestPossible;
@@ -176,13 +176,13 @@ public class VersionGCRecommendations {
//Check for any registered checkpoint which prevent the GC from running
Revision checkpoint = checkpoints.getOldestRevisionToKeep();
- final GCResult gcResult = getResult(options, ignoreDueToCheckPoint, scope, checkpoint);
+ final GCResult gcResult = getResult(options, checkpoint, scope);
scope = gcResult.gcScope;
ignoreDueToCheckPoint = gcResult.ignoreGC;
- final GCResult detailGCResult = getResult(options, ignoreDetailGCDueToCheckPoint, scopeDetailedGC, checkpoint);
+ final GCResult detailGCResult = getResult(options, checkpoint, scopeDetailedGC);
scopeDetailedGC = detailGCResult.gcScope;
- ignoreDetailGCDueToCheckPoint = detailGCResult.ignoreGC;
+ ignoreDetailedGCDueToCheckPoint = detailGCResult.ignoreGC;
if (scope.getDurationMs() <= options.precisionMs) {
// If we have narrowed the collect time interval down as much as we can, no
@@ -194,7 +194,7 @@ public class VersionGCRecommendations {
this.precisionMs = options.precisionMs;
this.ignoreDueToCheckPoint = ignoreDueToCheckPoint;
this.scope = scope;
- this.ignoreDetailGCDueToCheckPoint = ignoreDetailGCDueToCheckPoint;
+ this.ignoreDetailedGCDueToCheckPoint = ignoreDetailedGCDueToCheckPoint;
this.scopeDetailedGC = scopeDetailedGC;
this.detailedGCId = oldestModifiedDocId;
this.scopeIsComplete = scope.toMs >= keep.fromMs;
@@ -251,7 +251,7 @@ public class VersionGCRecommendations {
}
// save data for detailed GC
- if (detailedGCEnabled && !stats.canceled && !stats.ignoredDetailGCDueToCheckPoint) {
+ if (detailedGCEnabled && !stats.canceled && !stats.ignoredDetailedGCDueToCheckPoint) {
// success, we would not expect to encounter revisions older than this in the future
setLongSetting(SETTINGS_COLLECTION_DETAILED_GC_TIMESTAMP_PROP, stats.oldestModifiedDocTimeStamp);
setStringSetting(SETTINGS_COLLECTION_DETAILED_GC_DOCUMENT_ID_PROP, stats.oldestModifiedDocId);
@@ -297,7 +297,8 @@ public class VersionGCRecommendations {
}
@NotNull
- private static GCResult getResult(VersionGCOptions options, boolean ignoreGC, TimeInterval gcScope, Revision checkpoint) {
+ private static GCResult getResult(final VersionGCOptions options, final Revision checkpoint, TimeInterval gcScope) {
+ boolean ignoreGC = false;
if (checkpoint != null && gcScope.endsAfter(checkpoint.getTimestamp())) {
TimeInterval minimalScope = gcScope.startAndDuration(options.precisionMs);
if (minimalScope.endsAfter(checkpoint.getTimestamp())) {
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
index 1e19eb6af7..ab7789f920 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
@@ -209,20 +209,19 @@ public class VersionGCSupport {
* @return the oldest modified document.
*/
public Optional<NodeDocument> getOldestModifiedDoc(final Clock clock) {
- long ts = 0;
long now = clock.getTime();
Iterable<NodeDocument> docs = null;
-
- LOG.info("find oldest modified document");
try {
- docs = getModifiedDocs(ts, now, 1, MIN_ID_VALUE);
+ docs = getModifiedDocs(0, now, 1, MIN_ID_VALUE);
if (docs.iterator().hasNext()) {
- return ofNullable(docs.iterator().next());
+ final NodeDocument oldestModifiedDoc = docs.iterator().next();
+ LOG.info("Oldest modified document is {}", oldestModifiedDoc);
+ return ofNullable(oldestModifiedDoc);
}
} finally {
Utils.closeIfCloseable(docs);
}
- LOG.info("find oldest modified document to be {}", Utils.timestampToString(ts));
+ LOG.info("No Modified Doc has been found, retuning empty");
return empty();
}
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
index 766c8e4cc5..f2a334b75b 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
@@ -66,6 +66,7 @@ import static java.util.concurrent.TimeUnit.SECONDS;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toSet;
import static org.apache.jackrabbit.guava.common.base.StandardSystemProperty.LINE_SEPARATOR;
+import static org.apache.jackrabbit.guava.common.base.Stopwatch.createUnstarted;
import static org.apache.jackrabbit.guava.common.collect.Iterables.all;
import static org.apache.jackrabbit.guava.common.collect.Iterators.partition;
import static org.apache.jackrabbit.guava.common.util.concurrent.Atomics.newReference;
@@ -85,6 +86,7 @@ public class VersionGarbageCollector {
private static final int DELETE_BATCH_SIZE = 450;
private static final int UPDATE_BATCH_SIZE = 450;
private static final int PROGRESS_BATCH_SIZE = 10000;
+ private static final int DETAILED_GC_BATCH_SIZE = 1000;
private static final String STATUS_IDLE = "IDLE";
private static final String STATUS_INITIALIZING = "INITIALIZING";
private static final Logger log = LoggerFactory.getLogger(VersionGarbageCollector.class);
@@ -270,7 +272,7 @@ public class VersionGarbageCollector {
public static class VersionGCStats {
boolean ignoredGCDueToCheckPoint;
- boolean ignoredDetailGCDueToCheckPoint;
+ boolean ignoredDetailedGCDueToCheckPoint;
boolean canceled;
boolean success = true;
boolean limitExceeded;
@@ -348,7 +350,7 @@ public class VersionGarbageCollector {
return "VersionGCStats{" +
"ignoredGCDueToCheckPoint=" + ignoredGCDueToCheckPoint +
- "ignoredDetailGCDueToCheckPoint=" + ignoredDetailGCDueToCheckPoint +
+ "ignoredDetailedGCDueToCheckPoint=" + ignoredDetailedGCDueToCheckPoint +
", canceled=" + canceled +
", deletedDocGCCount=" + deletedDocGCCount + " (of which leaf: " + deletedLeafDocGCCount + ")" +
", updateResurrectedGCCount=" + updateResurrectedGCCount +
@@ -366,7 +368,7 @@ public class VersionGarbageCollector {
void addRun(VersionGCStats run) {
++iterationCount;
this.ignoredGCDueToCheckPoint = run.ignoredGCDueToCheckPoint;
- this.ignoredDetailGCDueToCheckPoint = run.ignoredDetailGCDueToCheckPoint;
+ this.ignoredDetailedGCDueToCheckPoint = run.ignoredDetailedGCDueToCheckPoint;
this.canceled = run.canceled;
this.success = run.success;
this.limitExceeded = run.limitExceeded;
@@ -422,9 +424,9 @@ public class VersionGarbageCollector {
SORTING,
SPLITS_CLEANUP,
DETAILED_GC,
- COLLECT_PROPS,
- COLLECT_OLD_REVS,
- COLLECT_UNMERGED_BC,
+ DETAILED_GC_COLLECT_PROPS,
+ DETAILED_GC_COLLECT_OLD_REVS,
+ DETAILED_GC_COLLECT_UNMERGED_BC,
DETAILED_GC_CLEANUP,
UPDATING
}
@@ -455,9 +457,9 @@ public class VersionGarbageCollector {
this.watches.put(GCPhase.SPLITS_CLEANUP, stats.collectAndDeleteSplitDocs);
this.watches.put(GCPhase.UPDATING, stats.updateResurrectedDocuments);
this.watches.put(GCPhase.DETAILED_GC, stats.detailedGCDocs);
- this.watches.put(GCPhase.COLLECT_PROPS, stats.collectDeletedProps);
- this.watches.put(GCPhase.COLLECT_OLD_REVS, stats.collectDeletedOldRevs);
- this.watches.put(GCPhase.COLLECT_UNMERGED_BC, stats.collectUnmergedBC);
+ this.watches.put(GCPhase.DETAILED_GC_COLLECT_PROPS, stats.collectDeletedProps);
+ this.watches.put(GCPhase.DETAILED_GC_COLLECT_OLD_REVS, stats.collectDeletedOldRevs);
+ this.watches.put(GCPhase.DETAILED_GC_COLLECT_UNMERGED_BC, stats.collectUnmergedBC);
this.watches.put(GCPhase.DETAILED_GC_CLEANUP, stats.deleteDetailedGCDocs);
this.canceled = canceled;
}
@@ -584,8 +586,8 @@ public class VersionGarbageCollector {
// now run detailed GC if enabled
if (detailedGCEnabled) {
- if (rec.ignoreDetailGCDueToCheckPoint) {
- phases.stats.ignoredDetailGCDueToCheckPoint = true;
+ if (rec.ignoreDetailedGCDueToCheckPoint) {
+ phases.stats.ignoredDetailedGCDueToCheckPoint = true;
monitor.skipped("Checkpoint prevented detailed revision garbage collection");
} else {
final RevisionVector headRevision = nodeStore.getHeadRevision();
@@ -594,9 +596,7 @@ public class VersionGarbageCollector {
}
}
- if (detailedGCEnabled && rec.ignoreDueToCheckPoint && rec.ignoreDetailGCDueToCheckPoint) {
- cancel.set(true);
- } else if (!detailedGCEnabled && rec.ignoreDueToCheckPoint) {
+ if ((detailedGCEnabled && rec.ignoreDetailedGCDueToCheckPoint) || rec.ignoreDueToCheckPoint) {
cancel.set(true);
}
@@ -615,14 +615,14 @@ public class VersionGarbageCollector {
}
/**
- * "Detail garbage" refers to additional garbage identified as part of OAK-10199
+ * "Detailed garbage" refers to additional garbage identified as part of OAK-10199
* et al: essentially garbage that in earlier versions of Oak were ignored. This
* includes: deleted properties, revision information within documents, branch
* commit related garbage.
* <p/>
* TODO: limit this to run only on a singleton instance, eg the cluster leader
* <p/>
- * The "detail garbage" collector can be instructed to do a full repository scan
+ * The "detailed garbage" collector can be instructed to do a full repository scan
* - or incrementally based on where it last left off. When doing a full
* repository scan (but not limited to that), it executes in (small) batches
* followed by voluntary paused (aka throttling) to avoid excessive load on the
@@ -635,22 +635,25 @@ public class VersionGarbageCollector {
*/
private void collectDetailedGarbage(final GCPhases phases, final RevisionVector headRevision, final VersionGCRecommendations rec)
throws IOException {
+
+ final long oldestModifiedMs = rec.scopeDetailedGC.fromMs;
+ final long toModifiedMs = rec.scopeDetailedGC.toMs;
+ final String oldestModifiedDocId = rec.detailedGCId;
+
int docsTraversed = 0;
boolean foundDoc = true;
- final long oldestModifiedMs = rec.scopeDetailedGC.fromMs;
- final long toModified = rec.scopeDetailedGC.toMs;
long oldModifiedMs = oldestModifiedMs;
- final String oldestModifiedDocId = rec.detailedGCId;
+
try (DetailedGC gc = new DetailedGC(headRevision, monitor, cancel)) {
long fromModified = oldestModifiedMs;
String fromId = ofNullable(oldestModifiedDocId).orElse(MIN_ID_VALUE);
NodeDocument lastDoc;
if (phases.start(GCPhase.DETAILED_GC)) {
- while (foundDoc && fromModified < toModified && docsTraversed < PROGRESS_BATCH_SIZE) {
+ while (foundDoc && fromModified < toModifiedMs && docsTraversed < PROGRESS_BATCH_SIZE) {
// set foundDoc to false to allow exiting the while loop
foundDoc = false;
lastDoc = null;
- Iterable<NodeDocument> itr = versionStore.getModifiedDocs(fromModified, toModified, 1000, fromId);
+ Iterable<NodeDocument> itr = versionStore.getModifiedDocs(fromModified, toModifiedMs, DETAILED_GC_BATCH_SIZE, fromId);
try {
for (NodeDocument doc : itr) {
foundDoc = true;
@@ -662,7 +665,7 @@ public class VersionGarbageCollector {
}
docsTraversed++;
if (docsTraversed % 100 == 0) {
- monitor.info("Iterated through {} documents so far. {} had detail garbage",
+ monitor.info("Iterated through {} documents so far. {} had detailed garbage",
docsTraversed, gc.getGarbageDocsCount());
}
@@ -675,12 +678,12 @@ public class VersionGarbageCollector {
final Long modified = lastDoc.getModified();
if (modified == null) {
- monitor.warn("collectDetailGarbage : document has no _modified property : {}",
+ monitor.warn("collectDetailedGarbage : document has no _modified property : {}",
doc.getId());
- } else if (SECONDS.toMillis(modified) < oldestModifiedMs) {
+ } else if (SECONDS.toMillis(modified) < fromModified) {
monitor.warn(
- "collectDetailGarbage : document has older _modified than query boundary : {} (from: {}, to: {})",
- modified, fromModified, toModified);
+ "collectDetailedGarbage : document has older _modified than query boundary : {} (from: {}, to: {})",
+ modified, fromModified, toModifiedMs);
}
}
// now remove the garbage in one go, if any
@@ -721,7 +724,7 @@ public class VersionGarbageCollector {
if (docsTraversed < PROGRESS_BATCH_SIZE) {
// we have traversed all the docs within given time range and nothing is left
// lets set oldModifiedDocTimeStamp to upper limit of this cycle
- phases.stats.oldestModifiedDocTimeStamp = toModified;
+ phases.stats.oldestModifiedDocTimeStamp = toModifiedMs;
phases.stats.oldestModifiedDocId = MIN_ID_VALUE;
}
}
@@ -826,6 +829,7 @@ public class VersionGarbageCollector {
private final Map<String, Integer> deletedPropsCountMap;
private int garbageDocsCount;
+ private int totalGarbageDocsCount;
public DetailedGC(@NotNull RevisionVector headRevision, @NotNull GCMonitor monitor, @NotNull AtomicBoolean cancel) {
this.headRevision = requireNonNull(headRevision);
@@ -833,7 +837,7 @@ public class VersionGarbageCollector {
this.cancel = cancel;
this.updateOpList = new ArrayList<>();
this.deletedPropsCountMap = new HashMap<>();
- this.timer = Stopwatch.createUnstarted();
+ this.timer = createUnstarted();
}
public void collectGarbage(final NodeDocument doc, final GCPhases phases) {
@@ -849,6 +853,7 @@ public class VersionGarbageCollector {
// only add if there are changes for this doc
if (op.hasChanges()) {
garbageDocsCount++;
+ totalGarbageDocsCount++;
monitor.info("Collected [{}] garbage for doc [{}]", op.getChanges().size(), doc.getId());
updateOpList.add(op);
}
@@ -859,9 +864,9 @@ public class VersionGarbageCollector {
}
private void collectUnmergedBranchCommitDocument(final NodeDocument doc, final GCPhases phases, final UpdateOp updateOp) {
- if (phases.start(GCPhase.COLLECT_UNMERGED_BC)){
+ if (phases.start(GCPhase.DETAILED_GC_COLLECT_UNMERGED_BC)){
// TODO add umerged BC collection logic
- phases.stop(GCPhase.COLLECT_UNMERGED_BC);
+ phases.stop(GCPhase.DETAILED_GC_COLLECT_UNMERGED_BC);
}
}
@@ -869,7 +874,7 @@ public class VersionGarbageCollector {
private void collectDeletedProperties(final NodeDocument doc, final GCPhases phases, final UpdateOp updateOp) {
// get Map of all properties along with their values
- if (phases.start(GCPhase.COLLECT_PROPS)) {
+ if (phases.start(GCPhase.DETAILED_GC_COLLECT_PROPS)) {
final Set<String> properties = doc.getPropertyNames();
// find all the properties which can be removed from document.
@@ -893,26 +898,26 @@ public class VersionGarbageCollector {
if (log.isDebugEnabled()) {
log.debug("Collected {} deleted properties for document {}", deletedPropsGCCount, doc.getId());
}
- phases.stop(GCPhase.COLLECT_PROPS);
+ phases.stop(GCPhase.DETAILED_GC_COLLECT_PROPS);
}
}
private void collectOldRevisions(NodeDocument doc, GCPhases phases, UpdateOp updateOp) {
- if (phases.start(GCPhase.COLLECT_OLD_REVS)){
+ if (phases.start(GCPhase.DETAILED_GC_COLLECT_OLD_REVS)){
// TODO add old rev collection logic
- phases.stop(GCPhase.COLLECT_OLD_REVS);
+ phases.stop(GCPhase.DETAILED_GC_COLLECT_OLD_REVS);
}
}
int getGarbageDocsCount() {
- return garbageDocsCount;
+ return totalGarbageDocsCount;
}
@Override
- public void close() throws IOException {
-
+ public void close() {
+ totalGarbageDocsCount = 0;
}
public void removeGarbage(final VersionGCStats stats) {
@@ -948,6 +953,7 @@ public class VersionGarbageCollector {
log.info("Updated [{}] documents, deleted [{}] properties", updatedDocs, deletedProps);
// now reset delete metadata
updateOpList.clear();
+ deletedPropsCountMap.clear();
garbageDocsCount = 0;
} finally {
delayOnModifications(timer.stop().elapsed(MILLISECONDS), cancel);
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
index 6637afa4aa..1f6d4bf5f5 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
@@ -141,8 +141,8 @@ public class MongoVersionGCSupport extends VersionGCSupport {
* then perform the comparison.
* <p/>
*
- * @param fromModified the lower bound modified timestamp (inclusive)
- * @param toModified the upper bound modified timestamp (exclusive)
+ * @param fromModified the lower bound modified timestamp in millis (inclusive)
+ * @param toModified the upper bound modified timestamp in millis (exclusive)
* @param limit the limit of documents to return
* @param fromId the lower bound {@link NodeDocument#ID}
* @return matching documents.
@@ -246,8 +246,6 @@ public class MongoVersionGCSupport extends VersionGCSupport {
*/
@Override
public Optional<NodeDocument> getOldestModifiedDoc(final Clock clock) {
- LOG.info("getOldestModifiedDoc() <- start");
-
final Bson sort = and(eq(MODIFIED_IN_SECS, 1), eq(ID, 1));
// we need to add query condition to ignore `previous` documents which doesn't have this field
@@ -260,6 +258,7 @@ public class MongoVersionGCSupport extends VersionGCSupport {
} catch (Exception ex) {
LOG.error("getOldestModifiedDoc() <- error while fetching data from Mongo", ex);
}
+ LOG.info("No Modified Doc has been found, retuning empty");
return empty();
}
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
index 5e66bd974d..5082422109 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
@@ -330,16 +330,16 @@ public class RDBVersionGCSupport extends VersionGCSupport {
@Override
public Optional<NodeDocument> getOldestModifiedDoc(Clock clock) {
- LOG.info("getOldestModifiedDoc() <- start");
Iterable<NodeDocument> modifiedDocs = null;
try {
modifiedDocs = getModifiedDocs(0L, clock.getTime(), 1, MIN_ID_VALUE);
return modifiedDocs.iterator().hasNext() ? ofNullable(modifiedDocs.iterator().next()) : empty();
} catch (DocumentStoreException ex) {
- LOG.error("getOldestModifiedDoc()", ex);
+ LOG.error("getOldestModifiedDoc() <- Error ", ex);
} finally {
closeIfCloseable(modifiedDocs);
}
+ LOG.info("No Modified Doc has been found, retuning empty");
return empty();
}
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java
index 72358e154e..9994e2ebbf 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java
@@ -173,14 +173,14 @@ public class VersionGarbageCollectorIT {
clock.waitUntil(cp.getTimestamp() + expiryTime - maxAge);
VersionGCStats stats = gc.gc(maxAge, TimeUnit.MILLISECONDS);
assertTrue(stats.ignoredGCDueToCheckPoint);
- assertFalse(stats.ignoredDetailGCDueToCheckPoint);
+ assertFalse(stats.ignoredDetailedGCDueToCheckPoint);
assertTrue(stats.canceled);
//Fast forward time to future such that checkpoint get expired
clock.waitUntil(clock.getTime() + expiryTime + 1);
stats = gc.gc(maxAge, TimeUnit.MILLISECONDS);
assertFalse("GC should be performed", stats.ignoredGCDueToCheckPoint);
- assertFalse("Detailed GC shouldn't be performed", stats.ignoredDetailGCDueToCheckPoint);
+ assertFalse("Detailed GC shouldn't be performed", stats.ignoredDetailedGCDueToCheckPoint);
assertFalse(stats.canceled);
}
@@ -259,13 +259,13 @@ public class VersionGarbageCollectorIT {
//Fast forward time to future but before expiry of checkpoint
clock.waitUntil(cp.getTimestamp() + expiryTime - maxAge);
VersionGCStats stats = gc.gc(maxAge, TimeUnit.MILLISECONDS);
- assertTrue(stats.ignoredDetailGCDueToCheckPoint);
+ assertTrue(stats.ignoredDetailedGCDueToCheckPoint);
assertTrue(stats.canceled);
//Fast forward time to future such that checkpoint get expired
clock.waitUntil(clock.getTime() + expiryTime + 1);
stats = gc.gc(maxAge, TimeUnit.MILLISECONDS);
- assertFalse("Detailed GC should be performed", stats.ignoredDetailGCDueToCheckPoint);
+ assertFalse("Detailed GC should be performed", stats.ignoredDetailedGCDueToCheckPoint);
assertFalse(stats.canceled);
}
@@ -316,7 +316,7 @@ public class VersionGarbageCollectorIT {
assertEquals(1, stats.deletedPropsGCCount);
assertEquals(1, stats.updatedDetailedGCDocsCount);
assertTrue(stats.ignoredGCDueToCheckPoint);
- assertFalse(stats.ignoredDetailGCDueToCheckPoint);
+ assertFalse(stats.ignoredDetailedGCDueToCheckPoint);
assertFalse(stats.canceled);
}