diff --git oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java index df5c52d7eb..edfdac97f8 100644 --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java @@ -62,6 +62,15 @@ import org.slf4j.LoggerFactory; */ public class SegmentNodeStore implements NodeStore, Observable { + private static final Closeable NOOP = new Closeable() { + + @Override + public void close() { + // This method was intentionally left blank. + } + + }; + public static class SegmentNodeStoreBuilder { private static final Logger LOG = LoggerFactory.getLogger(SegmentNodeStoreBuilder.class); @@ -177,7 +186,11 @@ public class SegmentNodeStore implements NodeStore, Observable { @Override public Closeable addObserver(Observer observer) { - return scheduler.addObserver(observer); + if (scheduler instanceof Observable) { + return ((Observable) scheduler).addObserver(observer); + } + + return NOOP; } @Override @Nonnull diff --git oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java index 1d8400e00f..07c6a5b186 100644 --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java @@ -42,6 +42,7 @@ import org.apache.jackrabbit.oak.segment.SegmentOverflowException; import org.apache.jackrabbit.oak.segment.SegmentReader; import org.apache.jackrabbit.oak.spi.commit.ChangeDispatcher; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; +import org.apache.jackrabbit.oak.spi.commit.Observable; import org.apache.jackrabbit.oak.spi.commit.Observer; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -49,7 +50,7 @@ import org.apache.jackrabbit.oak.stats.StatisticsProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class LockBasedScheduler implements Scheduler { +public class LockBasedScheduler implements Scheduler, Observable { private static final Closeable NOOP = new Closeable() { @Override diff --git oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java index 63ae20b5a7..039efad8e7 100644 --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java @@ -17,13 +17,11 @@ package org.apache.jackrabbit.oak.segment.scheduler; -import java.io.Closeable; import java.util.Map; import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.spi.commit.Observer; import org.apache.jackrabbit.oak.spi.state.NodeState; /** @@ -90,13 +88,4 @@ public interface Scheduler { * @return the latest state. */ NodeState getHeadNodeState(); - - /** - * Register a new {@code Observer}. Clients need to call {@link Closeable#close()} - * to stop getting notifications on the registered observer and to free up any resources - * associated with the registration. - * - * @return a {@code Closeable} instance. - */ - Closeable addObserver(Observer observer); } \ No newline at end of file