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 fr...@apache.org on 2017/12/08 09:07:10 UTC
svn commit: r1817476 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
Author: frm
Date: Fri Dec 8 09:07:10 2017
New Revision: 1817476
URL: http://svn.apache.org/viewvc?rev=1817476&view=rev
Log:
OAK-7027 - Simplify synchronization of StandbyClientSync
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java?rev=1817476&r1=1817475&r2=1817476&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java Fri Dec 8 09:07:10 2017
@@ -63,7 +63,15 @@ public final class StandbyClientSync imp
private final boolean secure;
- private boolean active = false;
+ private final FileStore fileStore;
+
+ private final NioEventLoopGroup group;
+
+ private final File spoolFolder;
+
+ private final StandbyClientSyncExecution execution;
+
+ private final AtomicBoolean active = new AtomicBoolean(false);
private int failedRequests;
@@ -71,22 +79,12 @@ public final class StandbyClientSync imp
private volatile String state;
- private final Object sync = new Object();
-
- private final FileStore fileStore;
-
- private final AtomicBoolean running = new AtomicBoolean(true);
+ private volatile boolean running = true;
private long syncStartTimestamp;
private long syncEndTimestamp;
- private final NioEventLoopGroup group;
-
- private final File spoolFolder;
-
- private final StandbyClientSyncExecution execution;
-
private static String clientId() {
String s = System.getProperty(CLIENT_ID_PROPERTY_NAME);
@@ -111,7 +109,7 @@ public final class StandbyClientSync imp
this.fileStore = store;
this.observer = new CommunicationObserver(clientId());
this.group = new NioEventLoopGroup(0, new NamedThreadFactory("standby"));
- this.execution = new StandbyClientSyncExecution(fileStore, running::get);
+ this.execution = new StandbyClientSyncExecution(fileStore, () -> running);
this.spoolFolder = spoolFolder;
try {
ManagementFactory.getPlatformMBeanServer().registerMBean(new StandardMBean(this, ClientStandbyStatusMBean.class), new ObjectName(this.getMBeanName()));
@@ -146,21 +144,18 @@ public final class StandbyClientSync imp
try {
Thread.currentThread().setName("standby-run-" + standbyRunCounter.incrementAndGet());
- if (!isRunning()) {
- // manually stopped
+ if (!running) {
return;
}
state = STATUS_STARTING;
- synchronized (sync) {
- if (active) {
- return;
- }
- state = STATUS_RUNNING;
- active = true;
+ if (!active.compareAndSet(false, true)) {
+ return;
}
+ state = STATUS_RUNNING;
+
try {
long startTimestamp = System.currentTimeMillis();
@@ -187,9 +182,7 @@ public final class StandbyClientSync imp
this.failedRequests++;
log.error("Failed synchronizing state.", e);
} finally {
- synchronized (this.sync) {
- this.active = false;
- }
+ active.set(false);
}
} finally {
Thread.currentThread().setName(name);
@@ -213,18 +206,18 @@ public final class StandbyClientSync imp
@Override
public boolean isRunning() {
- return running.get();
+ return running;
}
@Override
public void start() {
- running.set(true);
+ running = true;
state = STATUS_RUNNING;
}
@Override
public void stop() {
- running.set(false);
+ running = false;
state = STATUS_STOPPED;
}