Author: adulceanu
Date: Thu May 4 08:34:40 2017
New Revision: 1793751
URL: http://svn.apache.org/viewvc?rev=1793751&view=rev
Log:
OAK-6138 - Remove addObserver method from Scheduler API
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java?rev=1793751&r1=1793750&r2=1793751&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
Thu May 4 08:34:40 2017
@@ -177,7 +177,11 @@ public class SegmentNodeStore implements
@Override
public Closeable addObserver(Observer observer) {
- return scheduler.addObserver(observer);
+ if (scheduler instanceof Observable) {
+ return ((Observable) scheduler).addObserver(observer);
+ }
+
+ return () -> {};
}
@Override @Nonnull
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java?rev=1793751&r1=1793750&r2=1793751&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/LockBasedScheduler.java
Thu May 4 08:34:40 2017
@@ -42,6 +42,7 @@ import org.apache.jackrabbit.oak.segment
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;
@@ -50,14 +51,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LockBasedScheduler implements Scheduler {
- private static final Closeable NOOP = new Closeable() {
-
- @Override
- public void close() {
- // This method was intentionally left blank.
- }
-
- };
public static class LockBasedSchedulerBuilder {
@Nonnull
@@ -97,7 +90,11 @@ public class LockBasedScheduler implemen
@Nonnull
public LockBasedScheduler build() {
- return new LockBasedScheduler(this);
+ if (dispatchChanges) {
+ return new ObservableLockBasedScheduler(this);
+ } else {
+ return new LockBasedScheduler(this);
+ }
}
}
@@ -135,9 +132,7 @@ public class LockBasedScheduler implemen
@Nonnull
private final Revisions revisions;
- private final AtomicReference<SegmentNodeState> head;
-
- private final ChangeDispatcher changeDispatcher;
+ protected final AtomicReference<SegmentNodeState> head;
private final SegmentNodeStoreStats stats;
@@ -149,24 +144,11 @@ public class LockBasedScheduler implemen
this.reader = builder.reader;
this.revisions = builder.revisions;
this.head = new
AtomicReference<SegmentNodeState>(reader.readHeadState(revisions));
- if (builder.dispatchChanges) {
- this.changeDispatcher = new
ChangeDispatcher(head.get().getChildNode(ROOT));
- } else {
- this.changeDispatcher = null;
- }
this.stats = new SegmentNodeStoreStats(builder.statsProvider);
}
@Override
- public Closeable addObserver(Observer observer) {
- if (changeDispatcher != null) {
- return changeDispatcher.addObserver(observer);
- }
- return NOOP;
- }
-
- @Override
public NodeState getHeadNodeState() {
if (commitSemaphore.tryAcquire()) {
try {
@@ -195,10 +177,8 @@ public class LockBasedScheduler implemen
}
}
- private void contentChanged(NodeState root, CommitInfo info) {
- if (changeDispatcher != null) {
- changeDispatcher.contentChanged(root, info);
- }
+ protected void contentChanged(NodeState root, CommitInfo info) {
+ // do nothing without a change dispatcher
}
@Override
@@ -319,6 +299,25 @@ public class LockBasedScheduler implemen
return false;
}
+ private static class ObservableLockBasedScheduler extends
LockBasedScheduler implements Observable {
+ private final ChangeDispatcher changeDispatcher;
+
+ public ObservableLockBasedScheduler(LockBasedSchedulerBuilder builder)
{
+ super(builder);
+ this.changeDispatcher = new
ChangeDispatcher(head.get().getChildNode(ROOT));
+ }
+
+ @Override
+ protected void contentChanged(NodeState root, CommitInfo info) {
+ changeDispatcher.contentChanged(root, info);
+ }
+
+ @Override
+ public Closeable addObserver(Observer observer) {
+ return changeDispatcher.addObserver(observer);
+ }
+ }
+
private final class CPCreator implements Callable<Boolean> {
private final String name;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java?rev=1793751&r1=1793750&r2=1793751&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/scheduler/Scheduler.java
Thu May 4 08:34:40 2017
@@ -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