Class VersionGCSupport
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.document.VersionGCSupport
-
- Direct Known Subclasses:
MongoVersionGCSupport
,RDBVersionGCSupport
public class VersionGCSupport extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description VersionGCSupport(DocumentStore store)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected SplitDocumentCleanUp
createCleanUp(java.util.Set<NodeDocument.SplitDocType> gcTypes, RevisionVector sweepRevs, long oldestRevTimeStamp, VersionGarbageCollector.VersionGCStats stats)
long
getDeletedOnceCount()
@NotNull DocumentStore
getDocumentStore()
Returns the underlying document store.long
getOldestDeletedOnceTimestamp(Clock clock, long precisionMs)
Retrieve the time of the oldest document marked as 'deletedOnce'.java.lang.Iterable<NodeDocument>
getPossiblyDeletedDocs(long fromModified, long toModified)
Returns documents that have aNodeDocument.MODIFIED_IN_SECS
value within the given range and theNodeDocument.DELETED
set totrue
.protected java.lang.Iterable<NodeDocument>
identifyGarbage(java.util.Set<NodeDocument.SplitDocType> gcTypes, RevisionVector sweepRevs, long oldestRevTimeStamp)
protected static boolean
isDefaultNoBranchSplitNewerThan(NodeDocument doc, RevisionVector sweepRevs)
Returnstrue
if the given document is of typeNodeDocument.SplitDocType.DEFAULT_NO_BRANCH
and the most recent change on the document is newer than thesweepRevs
.
-
-
-
Constructor Detail
-
VersionGCSupport
public VersionGCSupport(DocumentStore store)
-
-
Method Detail
-
getPossiblyDeletedDocs
public java.lang.Iterable<NodeDocument> getPossiblyDeletedDocs(long fromModified, long toModified)
Returns documents that have aNodeDocument.MODIFIED_IN_SECS
value within the given range and theNodeDocument.DELETED
set totrue
. The two passed modified timestamps are in milliseconds since the epoch and the implementation will convert them to seconds at the granularity of theNodeDocument.MODIFIED_IN_SECS
field and then perform the comparison.- Parameters:
fromModified
- the lower bound modified timestamp (inclusive)toModified
- the upper bound modified timestamp (exclusive)- Returns:
- matching documents.
-
getDocumentStore
@NotNull public @NotNull DocumentStore getDocumentStore()
Returns the underlying document store.- Returns:
- the underlying document store.
-
createCleanUp
protected SplitDocumentCleanUp createCleanUp(java.util.Set<NodeDocument.SplitDocType> gcTypes, RevisionVector sweepRevs, long oldestRevTimeStamp, VersionGarbageCollector.VersionGCStats stats)
-
identifyGarbage
protected java.lang.Iterable<NodeDocument> identifyGarbage(java.util.Set<NodeDocument.SplitDocType> gcTypes, RevisionVector sweepRevs, long oldestRevTimeStamp)
-
getOldestDeletedOnceTimestamp
public long getOldestDeletedOnceTimestamp(Clock clock, long precisionMs)
Retrieve the time of the oldest document marked as 'deletedOnce'.- Parameters:
precisionMs
- the exact time may vary by given precision- Returns:
- the timestamp of the oldest document marked with 'deletecOnce', module given prevision. If no such document exists, returns the max time inspected (close to current time).
-
getDeletedOnceCount
public long getDeletedOnceCount() throws java.lang.UnsupportedOperationException
- Throws:
java.lang.UnsupportedOperationException
-
isDefaultNoBranchSplitNewerThan
protected static boolean isDefaultNoBranchSplitNewerThan(NodeDocument doc, RevisionVector sweepRevs)
Returnstrue
if the given document is of typeNodeDocument.SplitDocType.DEFAULT_NO_BRANCH
and the most recent change on the document is newer than thesweepRevs
.- Parameters:
doc
- the document to check.sweepRevs
- the current sweep revisions.- Returns:
true
if the document is aNodeDocument.SplitDocType.DEFAULT_NO_BRANCH
and it is newer thansweepRevs
;false
otherwise.
-
-