Skip to content

Commit

Permalink
OAK-6609: Provide job name for JournalGC and RevisionGC job
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk@1807199 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
mreutegg committed Sep 4, 2017
1 parent 54d0c75 commit c5fe70e
Showing 1 changed file with 39 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@

import com.google.common.base.Strings;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
import com.google.common.io.Closer;
import com.google.common.util.concurrent.UncheckedExecutionException;
import com.mongodb.MongoClientURI;
Expand Down Expand Up @@ -974,38 +975,27 @@ public String get() {
private void registerLastRevRecoveryJob(final DocumentNodeStore nodeStore) {
long leaseTime = toLong(context.getProperties().get(PROP_REV_RECOVERY_INTERVAL),
ClusterNodeInfo.DEFAULT_LEASE_UPDATE_INTERVAL_MILLIS);
Runnable recoverJob = new Runnable() {
@Override
public void run() {
nodeStore.getLastRevRecoveryAgent().performRecoveryIfNeeded();
}
};
addRegistration(WhiteboardUtils.scheduleWithFixedDelay(whiteboard,
recoverJob, TimeUnit.MILLISECONDS.toSeconds(leaseTime),
new LastRevRecoveryJob(nodeStore), TimeUnit.MILLISECONDS.toSeconds(leaseTime),
false/*runOnSingleClusterNode*/, true /*use dedicated pool*/));
}

private void registerJournalGC(final DocumentNodeStore nodeStore) {
long journalGCInterval = toLong(context.getProperties().get(PROP_JOURNAL_GC_INTERVAL_MILLIS),
DEFAULT_JOURNAL_GC_INTERVAL_MILLIS);

Runnable journalGCJob = new Runnable() {
@Override
public void run() {
nodeStore.getJournalGarbageCollector().gc();
}

};
addRegistration(WhiteboardUtils.scheduleWithFixedDelay(whiteboard,
journalGCJob, TimeUnit.MILLISECONDS.toSeconds(journalGCInterval),
new JournalGCJob(nodeStore),
jobPropertiesFor(JournalGCJob.class),
TimeUnit.MILLISECONDS.toSeconds(journalGCInterval),
true/*runOnSingleClusterNode*/, true /*use dedicated pool*/));
}

private void registerVersionGCJob(final DocumentNodeStore nodeStore) {
if (isContinuousRevisionGC()) {
final long versionGcMaxAgeInSecs = toLong(prop(PROP_VER_GC_MAX_AGE), DEFAULT_VER_GC_MAX_AGE);
long versionGcMaxAgeInSecs = toLong(prop(PROP_VER_GC_MAX_AGE), DEFAULT_VER_GC_MAX_AGE);
addRegistration(WhiteboardUtils.scheduleWithFixedDelay(whiteboard,
new RevisionGCJob(nodeStore, versionGcMaxAgeInSecs),
jobPropertiesFor(RevisionGCJob.class),
MODIFIED_IN_SECS_RESOLUTION, true, true));
}
}
Expand Down Expand Up @@ -1138,4 +1128,36 @@ private void maybeLogStats() {
}
}
}

private static final class JournalGCJob implements Runnable {

private final DocumentNodeStore nodeStore;

JournalGCJob(DocumentNodeStore ns) {
this.nodeStore = ns;
}

@Override
public void run() {
nodeStore.getJournalGarbageCollector().gc();
}
}

private static final class LastRevRecoveryJob implements Runnable {

private final DocumentNodeStore nodeStore;

LastRevRecoveryJob(DocumentNodeStore ns) {
this.nodeStore = ns;
}

@Override
public void run() {
nodeStore.getLastRevRecoveryAgent().performRecoveryIfNeeded();
}
}

private static Map<String, Object> jobPropertiesFor(Class clazz) {
return ImmutableMap.of("scheduler.name", clazz.getName());
}
}

0 comments on commit c5fe70e

Please sign in to comment.