Author: frm
Date: Mon Sep 26 09:48:06 2016
New Revision: 1762301
URL: http://svn.apache.org/viewvc?rev=1762301&view=rev
Log:
OAK-4813 - Simplify the server side of Cold Standby
Contribution by Andrei Dulceanu.
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
- copied, changed from r1762294,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySync.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
- copied, changed from r1762294,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySyncExecution.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java
(with props)
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java
(with props)
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySync.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySyncExecution.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
Mon Sep 26 09:48:06 2016
@@ -33,6 +33,7 @@ import io.netty.handler.codec.LengthFiel
import io.netty.handler.codec.compression.SnappyFramedDecoder;
import io.netty.handler.codec.string.StringEncoder;
import io.netty.handler.ssl.SslContext;
+import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.util.CharsetUtil;
@@ -77,7 +78,7 @@ class StandbyClient implements AutoClose
final SslContext sslContext;
if (secure) {
- sslContext =
SslContext.newClientContext(InsecureTrustManagerFactory.INSTANCE);
+ sslContext =
SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build();
} else {
sslContext = null;
}
Copied:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
(from r1762294,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySync.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?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySync.java&r1=1762294&r2=1762301&rev=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySync.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
Mon Sep 26 09:48:06 2016
@@ -40,11 +40,11 @@ import org.apache.jackrabbit.oak.segment
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public final class StandbySync implements ClientStandbyStatusMBean, Runnable,
Closeable {
+public final class StandbyClientSync implements ClientStandbyStatusMBean,
Runnable, Closeable {
public static final String CLIENT_ID_PROPERTY_NAME = "standbyID";
- private static final Logger log =
LoggerFactory.getLogger(StandbySync.class);
+ private static final Logger log =
LoggerFactory.getLogger(StandbyClientSync.class);
private final String host;
@@ -76,7 +76,7 @@ public final class StandbySync implement
private long syncEndTimestamp;
- public StandbySync(String host, int port, FileStore store, boolean secure,
int readTimeoutMs, boolean autoClean) throws SSLException {
+ public StandbyClientSync(String host, int port, FileStore store, boolean
secure, int readTimeoutMs, boolean autoClean) throws SSLException {
this.state = STATUS_INITIALIZING;
this.lastSuccessfulRequest = -1;
this.syncStartTimestamp = -1;
@@ -103,6 +103,7 @@ public final class StandbySync implement
return StandbyStatusMBean.JMX_NAME + ",id=\"" + this.observer.getID()
+ "\"";
}
+ @Override
public void close() {
stop();
state = STATUS_CLOSING;
@@ -116,6 +117,7 @@ public final class StandbySync implement
state = STATUS_CLOSED;
}
+ @Override
public void run() {
if (!isRunning()) {
// manually stopped
@@ -138,7 +140,7 @@ public final class StandbySync implement
client.connect(host, port);
long sizeBefore = fileStore.getStats().getApproximateSize();
- new StandbySyncExecution(fileStore, client,
newRunningSupplier()).execute();
+ new StandbyClientSyncExecution(fileStore, client,
newRunningSupplier()).execute();
long sizeAfter = fileStore.getStats().getApproximateSize();
if (autoClean && sizeBefore > 0) {
Copied:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
(from r1762294,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySyncExecution.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySyncExecution.java&r1=1762294&r2=1762301&rev=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbySyncExecution.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
Mon Sep 26 09:48:06 2016
@@ -44,9 +44,9 @@ import org.slf4j.LoggerFactory;
* temporary state that is supposed to be used for the lifetime of a
* synchronization run.
*/
-class StandbySyncExecution {
+class StandbyClientSyncExecution {
- private static final Logger log =
LoggerFactory.getLogger(StandbySyncExecution.class);
+ private static final Logger log =
LoggerFactory.getLogger(StandbyClientSyncExecution.class);
private final FileStore store;
@@ -58,7 +58,7 @@ class StandbySyncExecution {
private final Map<UUID, Segment> cache = newHashMap();
- StandbySyncExecution(FileStore store, StandbyClient client,
Supplier<Boolean> running) {
+ StandbyClientSyncExecution(FileStore store, StandbyClient client,
Supplier<Boolean> running) {
this.store = store;
this.client = client;
this.running = running;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
Mon Sep 26 09:48:06 2016
@@ -19,15 +19,9 @@
package org.apache.jackrabbit.oak.segment.standby.server;
-import java.io.Closeable;
-import java.lang.management.ManagementFactory;
import java.security.cert.CertificateException;
import java.util.concurrent.TimeUnit;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.StandardMBean;
import javax.net.ssl.SSLException;
import io.netty.bootstrap.ServerBootstrap;
@@ -43,67 +37,96 @@ import io.netty.handler.codec.LineBasedF
import io.netty.handler.codec.compression.SnappyFramedEncoder;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.ssl.SslContext;
+import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.SelfSignedCertificate;
import io.netty.util.CharsetUtil;
-import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobResponseEncoder;
import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder;
import
org.apache.jackrabbit.oak.segment.standby.codec.GetSegmentResponseEncoder;
import org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder;
-import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class StandbyServer implements StandbyStatusMBean, Closeable {
+class StandbyServer implements AutoCloseable {
- private static final Logger log = LoggerFactory
- .getLogger(StandbyServer.class);
+ private static final Logger log =
LoggerFactory.getLogger(StandbyServer.class);
+
+ static Builder builder(int port, StoreProvider provider) {
+ return new Builder(port, provider);
+ }
private final int port;
private final EventLoopGroup bossGroup;
+
private final EventLoopGroup workerGroup;
+
private final ServerBootstrap b;
- private final CommunicationObserver observer;
+
private SslContext sslContext;
+
private ChannelFuture channelFuture;
- private boolean running;
- private volatile String state;
+ static class Builder {
- public StandbyServer(int port, final FileStore store) throws
CertificateException, SSLException {
- this(port, store, null, false);
- }
+ private final int port;
- public StandbyServer(int port, final FileStore store, boolean secure)
throws CertificateException, SSLException {
- this(port, store, null, secure);
- }
+ private final StoreProvider storeProvider;
+
+ private boolean secure;
+
+ private String[] allowedClientIPRanges;
+
+ private StateConsumer stateConsumer;
+
+ private CommunicationObserver observer;
+
+ private Builder(final int port, final StoreProvider storeProvider) {
+ this.port = port;
+ this.storeProvider = storeProvider;
+ }
+
+ Builder secure(boolean secure) {
+ this.secure = secure;
+ return this;
+ }
+
+ Builder allowIPRanges(String[] alloallowedClientIPRanges) {
+ this.allowedClientIPRanges = alloallowedClientIPRanges;
+
+ return this;
+ }
+
+ Builder withStateConsumer(StateConsumer stateConsumer) {
+ this.stateConsumer = stateConsumer;
+
+ return this;
+ }
+
+ Builder withObserver(CommunicationObserver observer) {
+ this.observer = observer;
+
+ return this;
+ }
+
+ StandbyServer build() throws CertificateException, SSLException {
+ return new StandbyServer(this);
+ }
- public StandbyServer(int port, final FileStore store, String[]
allowedClientIPRanges) throws CertificateException, SSLException {
- this(port, store, allowedClientIPRanges, false);
}
- public StandbyServer(int port, final FileStore store, final String[]
allowedClientIPRanges, boolean secure) throws CertificateException,
SSLException {
- this.port = port;
+ private StandbyServer(final Builder builder) throws CertificateException,
SSLException {
+ this.port = builder.port;
- if (secure) {
+ if (builder.secure) {
SelfSignedCertificate ssc = new SelfSignedCertificate();
- sslContext = SslContext.newServerContext(ssc.certificate(),
ssc.privateKey());
+ sslContext = SslContextBuilder.forServer(ssc.certificate(),
ssc.privateKey()).build();
}
- observer = new CommunicationObserver("primary");
bossGroup = new NioEventLoopGroup(1);
workerGroup = new NioEventLoopGroup();
- final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
- try {
- jmxServer.registerMBean(new StandardMBean(this,
StandbyStatusMBean.class), new ObjectName(this.getMBeanName()));
- }
- catch (Exception e) {
- log.error("can't register standby status mbean", e);
- }
-
b = new ServerBootstrap();
b.group(bossGroup, workerGroup);
b.channel(NioServerSocketChannel.class);
@@ -119,10 +142,10 @@ public class StandbyServer implements St
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
- p.addLast(new ClientFilterHandler(new
ClientIpFilter(allowedClientIPRanges)));
+ p.addLast(new ClientFilterHandler(new
ClientIpFilter(builder.allowedClientIPRanges)));
if (sslContext != null) {
- p.addLast(sslContext.newHandler(ch.alloc()));
+ p.addLast("ssl", sslContext.newHandler(ch.alloc()));
}
// Decoders
@@ -130,8 +153,8 @@ public class StandbyServer implements St
p.addLast(new LineBasedFrameDecoder(8192));
p.addLast(new StringDecoder(CharsetUtil.UTF_8));
p.addLast(new RequestDecoder());
- p.addLast(new StateHandler(newStateConsumer()));
- p.addLast(new RequestObserverHandler(observer));
+ p.addLast(new StateHandler(builder.stateConsumer));
+ p.addLast(new RequestObserverHandler(builder.observer));
// Encoders
@@ -139,120 +162,56 @@ public class StandbyServer implements St
p.addLast(new GetHeadResponseEncoder());
p.addLast(new GetSegmentResponseEncoder());
p.addLast(new GetBlobResponseEncoder());
- p.addLast(new ResponseObserverHandler(observer));
+ p.addLast(new ResponseObserverHandler(builder.observer));
// Handlers
- p.addLast(new GetHeadRequestHandler(new
DefaultStandbyHeadReader(store)));
- p.addLast(new GetSegmentRequestHandler(new
DefaultStandbySegmentReader(store)));
- p.addLast(new GetBlobRequestHandler(new
DefaultStandbyBlobReader(store)));
+ p.addLast(new GetHeadRequestHandler(new
DefaultStandbyHeadReader(builder.storeProvider.provideStore())));
+ p.addLast(new GetSegmentRequestHandler(new
DefaultStandbySegmentReader(builder.storeProvider.provideStore())));
+ p.addLast(new GetBlobRequestHandler(new
DefaultStandbyBlobReader(builder.storeProvider.provideStore())));
}
});
}
- private StateConsumer newStateConsumer() {
- return new StateConsumer() {
-
- @Override
- public void consumeState(String state) {
- StandbyServer.this.state = state;
- }
+ public void start() {
+ channelFuture = b.bind(port);
- };
+ if (channelFuture.awaitUninterruptibly(10, TimeUnit.SECONDS)) {
+ onTimelyConnect();
+ } else {
+ onConnectTimeOut();
+ }
}
- public String getMBeanName() {
- return StandbyStatusMBean.JMX_NAME + ",id=" + this.port;
+ public void stop() {
+ channelFuture.channel().disconnect();
}
+ @Override
public void close() {
stop();
- state = STATUS_CLOSING;
- observer.unregister();
- final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
- try {
- jmxServer.unregisterMBean(new ObjectName(this.getMBeanName()));
- } catch (InstanceNotFoundException e) {
- // ignore
- } catch (Exception e) {
- log.error("can't unregister standby status mbean", e);
- }
+
if (bossGroup != null && !bossGroup.isShuttingDown()) {
bossGroup.shutdownGracefully(0, 1,
TimeUnit.SECONDS).syncUninterruptibly();
}
if (workerGroup != null && !workerGroup.isShuttingDown()) {
workerGroup.shutdownGracefully(0, 1,
TimeUnit.SECONDS).syncUninterruptibly();
}
- state = STATUS_CLOSED;
- }
-
- @Override
- public void start() {
- if (running) {
- return;
- }
-
- state = STATUS_STARTING;
-
- channelFuture = b.bind(port);
-
- if (channelFuture.awaitUninterruptibly(10, TimeUnit.SECONDS)) {
- onTimelyStart();
- } else {
- onStartTimeOut();
- }
}
- private void onTimelyStart() {
+ private void onTimelyConnect() {
if (channelFuture.isSuccess()) {
- onSuccessfulStart();
+ log.debug("Binding was successful");
}
if (channelFuture.cause() != null) {
- onUnsuccessfulStart();
+ throw new RuntimeException(channelFuture.cause());
}
}
- private void onSuccessfulStart() {
- log.debug("Binding was successful");
- state = STATUS_RUNNING;
- running = true;
- }
-
- private void onUnsuccessfulStart() {
- log.debug("Binding was unsuccessful", channelFuture.cause());
- state = null;
- running = false;
- throw new RuntimeException(channelFuture.cause());
- }
-
- private void onStartTimeOut() {
+ private void onConnectTimeOut() {
log.debug("Binding timed out, canceling");
- state = null;
- running = false;
channelFuture.cancel(true);
}
- @Override
- public String getMode() {
- return "primary";
- }
-
- @Override
- public boolean isRunning() { return running; }
-
- @Override
- public void stop() {
- if (running) {
- running = false;
- this.state = STATUS_STOPPED;
- channelFuture.channel().disconnect();
- }
- }
-
- @Override
- public String getStatus() {
- return state == null ? STATUS_INITIALIZING : state;
- }
-
}
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java?rev=1762301&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java
(added)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java
Mon Sep 26 09:48:06 2016
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.segment.standby.server;
+
+import java.io.Closeable;
+import java.lang.management.ManagementFactory;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class StandbyServerSync implements StandbyStatusMBean, StateConsumer,
StoreProvider, Closeable {
+
+ private static final Logger log =
LoggerFactory.getLogger(StandbyServer.class);
+
+ private final FileStore fileStore;
+
+ private final CommunicationObserver observer;
+
+ private final int port;
+
+ private final String[] allowedClientIPRanges;
+
+ private final boolean secure;
+
+ private volatile String state;
+
+ private final AtomicBoolean running = new AtomicBoolean(false);
+
+ private StandbyServer server;
+
+ public StandbyServerSync(final int port, final FileStore fileStore) {
+ this(port, fileStore, null, false);
+ }
+
+ public StandbyServerSync(final int port, final FileStore fileStore, final
boolean secure) {
+ this(port, fileStore, null, secure);
+ }
+
+ public StandbyServerSync(final int port, final FileStore fileStore, final
String[] allowedClientIPRanges) {
+ this(port, fileStore, allowedClientIPRanges, false);
+ }
+
+ public StandbyServerSync(final int port, final FileStore fileStore, final
String[] allowedClientIPRanges, final boolean secure) {
+ this.port = port;
+ this.fileStore = fileStore;
+ this.allowedClientIPRanges = allowedClientIPRanges;
+ this.secure = secure;
+ this.observer = new CommunicationObserver("primary");
+
+ final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
+
+ try {
+ jmxServer.registerMBean(new StandardMBean(this,
StandbyStatusMBean.class), new ObjectName(this.getMBeanName()));
+ } catch (Exception e) {
+ log.error("can't register standby status mbean", e);
+ }
+ }
+
+ @Override
+ public void consumeState(String state) {
+ this.state = state;
+ }
+
+ @Override
+ public FileStore provideStore() {
+ return fileStore;
+ }
+
+ @Override
+ public void start() {
+ if (isRunning()) {
+ return;
+ }
+
+ state = STATUS_STARTING;
+
+ try {
+ server = StandbyServer.builder(port, this)
+ .secure(secure)
+ .allowIPRanges(allowedClientIPRanges)
+ .withStateConsumer(this)
+ .withObserver(observer)
+ .build();
+ server.start();
+
+ state = STATUS_RUNNING;
+ running.set(true);
+ } catch (Exception e) {
+ log.error("Server could not be started.", e);
+ state = null;
+ running.set(false);
+ }
+ }
+
+ @Override
+ public void stop() {
+ if (server != null) {
+ server.stop();
+ }
+
+ running.set(false);
+ state = STATUS_STOPPED;
+ }
+
+ @Override
+ public void close() {
+ stop();
+ state = STATUS_CLOSING;
+
+ observer.unregister();
+ final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
+ try {
+ jmxServer.unregisterMBean(new ObjectName(this.getMBeanName()));
+ } catch (InstanceNotFoundException e) {
+ // ignore
+ } catch (Exception e) {
+ log.error("can't unregister standby status mbean", e);
+ }
+
+ state = STATUS_CLOSED;
+ }
+
+ @Override
+ public String getMode() {
+ return "primary";
+ }
+
+ @Override
+ public String getStatus() {
+ return state == null ? STATUS_INITIALIZING : state;
+ }
+
+ @Override
+ public boolean isRunning() {
+ return running.get();
+ }
+
+ public String getMBeanName() {
+ return StandbyStatusMBean.JMX_NAME + ",id=" + this.port;
+ }
+
+}
Propchange:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerSync.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java?rev=1762301&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java
(added)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java
Mon Sep 26 09:48:06 2016
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.segment.standby.server;
+
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+
+interface StoreProvider {
+
+ FileStore provideStore();
+}
Propchange:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StoreProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
Mon Sep 26 09:48:06 2016
@@ -38,8 +38,8 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.segment.SegmentStore;
import org.apache.jackrabbit.oak.segment.SegmentStoreProvider;
import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -94,9 +94,9 @@ public class StandbyStoreService {
private FileStore fileStore;
- private StandbyServer primary = null;
+ private StandbyServerSync serverSync = null;
- private StandbySync sync = null;
+ private StandbyClientSync clientSync = null;
private ServiceRegistration syncReg = null;
@@ -128,12 +128,14 @@ public class StandbyStoreService {
@Deactivate
public synchronized void deactivate() {
- if (primary != null) {
- primary.close();
+ if (serverSync != null) {
+ serverSync.close();
}
- if (sync != null) {
- sync.close();
+
+ if (clientSync != null) {
+ clientSync.close();
}
+
if (syncReg != null) {
syncReg.unregister();
}
@@ -144,8 +146,8 @@ public class StandbyStoreService {
int port = PropertiesUtil.toInteger(props.get(PORT), PORT_DEFAULT);
String[] ranges =
PropertiesUtil.toStringArray(props.get(ALLOWED_CLIENT_IP_RANGES),
ALLOWED_CLIENT_IP_RANGES_DEFAULT);
boolean secure = PropertiesUtil.toBoolean(props.get(SECURE),
SECURE_DEFAULT);
- primary = new StandbyServer(port, fileStore, ranges, secure);
- primary.start();
+ serverSync = new StandbyServerSync(port, fileStore, ranges, secure);
+ serverSync.start();
log.info("started primary on port {} with allowed ip ranges {}.",
port, ranges);
}
@@ -158,14 +160,14 @@ public class StandbyStoreService {
int readTimeout = PropertiesUtil.toInteger(props.get(READ_TIMEOUT),
READ_TIMEOUT_DEFAULT);
boolean clean = PropertiesUtil.toBoolean(props.get(AUTO_CLEAN),
AUTO_CLEAN_DEFAULT);
- sync = new StandbySync(host, port, fileStore, secure, readTimeout,
clean);
+ clientSync = new StandbyClientSync(host, port, fileStore, secure,
readTimeout, clean);
Dictionary<Object, Object> dictionary = new Hashtable<Object,
Object>();
dictionary.put("scheduler.period", interval);
dictionary.put("scheduler.concurrent", false);
// dictionary.put("scheduler.runOn", "SINGLE");
syncReg = context.getBundleContext().registerService(
- Runnable.class.getName(), sync, dictionary);
+ Runnable.class.getName(), clientSync, dictionary);
log.info("started standby sync with {}:{} at {} sec.", host,
port, interval);
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
Mon Sep 26 09:48:06 2016
@@ -25,8 +25,8 @@ import static org.junit.Assert.assertFal
import org.apache.jackrabbit.oak.segment.NetworkErrorProxy;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
@@ -121,13 +121,13 @@ public class BrokenNetworkTest extends T
p.run();
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS, ssl);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS, ssl);
+ serverSync.start();
addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl = newStandbySync(storeC, proxyPort, ssl);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(storeC, proxyPort,
ssl);
+ clientSync.run();
try {
if (skipBytes > 0 || flipPosition >= 0) {
@@ -139,12 +139,12 @@ public class BrokenNetworkTest extends T
addTestContent(store, "server2");
storeS.flush();
}
- cl.run();
+ clientSync.run();
}
assertEquals(storeS.getHead(), storeC.getHead());
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
p.close();
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
Mon Sep 26 09:48:06 2016
@@ -42,8 +42,8 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -107,18 +107,18 @@ public class DataStoreTestBase extends T
FileStore secondary = getSecondary();
NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
- final StandbyServer server = new StandbyServer(port, primary);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
primary);
+ serverSync.start();
byte[] data = addTestContent(store, "server", blobSize);
primary.flush();
- StandbySync cl = newStandbySync(secondary);
+ StandbyClientSync cl = newStandbyClientSync(secondary);
cl.run();
try {
assertEquals(primary.getHead(), secondary.getHead());
} finally {
- server.close();
+ serverSync.close();
cl.close();
}
@@ -183,13 +183,13 @@ public class DataStoreTestBase extends T
p.run();
NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
- final StandbyServer server = new StandbyServer(port, primary);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
primary);
+ serverSync.start();
byte[] data = addTestContent(store, "server", blobSize);
primary.flush();
- StandbySync cl = newStandbySync(secondary, proxyPort);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(secondary,
proxyPort);
+ clientSync.run();
try {
if (skipBytes > 0 || flipPosition >= 0) {
@@ -202,12 +202,12 @@ public class DataStoreTestBase extends T
data = addTestContent(store, "server", blobSize);
primary.flush();
}
- cl.run();
+ clientSync.run();
}
assertEquals(primary.getHead(), secondary.getHead());
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
p.close();
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java
Mon Sep 26 09:48:06 2016
@@ -24,8 +24,8 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
@@ -141,13 +141,13 @@ public class FailoverIPRangeTest extends
private void createTestWithConfig(String host, String[] ipRanges, boolean
expectedToWork) throws Exception {
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS, ipRanges);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS, ipRanges);
+ serverSync.start();
addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl = new StandbySync(host, port, storeC, false, timeout,
false);
- cl.run();
+ StandbyClientSync clientSync = new StandbyClientSync(host, port,
storeC, false, timeout, false);
+ clientSync.run();
try {
if (expectedToWork) {
@@ -157,8 +157,8 @@ public class FailoverIPRangeTest extends
assertFalse("stores are equal but shouldn't!",
storeS.getHead().equals(storeC.getHead()));
}
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
Mon Sep 26 09:48:06 2016
@@ -23,8 +23,8 @@ import static org.junit.Assert.assertFal
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.SegmentTestUtils;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
@@ -45,13 +45,13 @@ public class FailoverMultipleClientsTest
@Test
public void testMultipleClients() throws Exception {
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS);
+ serverSync.start();
SegmentTestUtils.addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl1 = newStandbySync(storeC);
- StandbySync cl2 = newStandbySync(storeC2);
+ StandbyClientSync cl1 = newStandbyClientSync(storeC);
+ StandbyClientSync cl2 = newStandbyClientSync(storeC2);
try {
assertFalse("first client has invalid initial store!",
storeS.getHead().equals(storeC.getHead()));
@@ -77,7 +77,7 @@ public class FailoverMultipleClientsTest
cl1.run();
assertEquals(storeS.getHead(), storeC.getHead());
} finally {
- server.close();
+ serverSync.close();
cl1.close();
cl2.close();
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
Mon Sep 26 09:48:06 2016
@@ -24,8 +24,8 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
@@ -47,19 +47,19 @@ public class FailoverSslTestIT extends T
public void testFailoverSecure() throws Exception {
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS, true);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS, true);
+ serverSync.start();
addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl = newStandbySync(storeC, port, true);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(storeC, port,
true);
+ clientSync.run();
try {
assertEquals(storeS.getHead(), storeC.getHead());
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
}
@@ -67,19 +67,19 @@ public class FailoverSslTestIT extends T
public void testFailoverSecureServerPlainClient() throws Exception {
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS, true);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS, true);
+ serverSync.start();
addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl = newStandbySync(storeC);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(storeC);
+ clientSync.run();
try {
assertFalse("stores are equal but shouldn't!",
storeS.getHead().equals(storeC.getHead()));
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
}
@@ -87,19 +87,19 @@ public class FailoverSslTestIT extends T
public void testFailoverPlainServerSecureClient() throws Exception {
NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
- final StandbyServer server = new StandbyServer(port, storeS);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS);
+ serverSync.start();
addTestContent(store, "server");
storeS.flush(); // this speeds up the test a little bit...
- StandbySync cl = newStandbySync(storeC, port, true);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(storeC, port,
true);
+ clientSync.run();
try {
assertFalse("stores are equal but shouldn't!",
storeS.getHead().equals(storeC.getHead()));
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java
Mon Sep 26 09:48:06 2016
@@ -30,9 +30,9 @@ import java.util.Set;
import javax.management.MBeanServer;
import javax.management.ObjectName;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -51,8 +51,8 @@ public class MBeanTest extends TestBase
@Test
public void testServerEmptyConfig() throws Exception {
- final StandbyServer server = new StandbyServer(TestBase.port,
this.storeS);
- server.start();
+ final StandbyServerSync serverSync = new
StandbyServerSync(TestBase.port, this.storeS);
+ serverSync.start();
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME +
",id=*");
@@ -60,7 +60,7 @@ public class MBeanTest extends TestBase
Set<ObjectName> instances = jmxServer.queryNames(status, null);
assertEquals(1, instances.size());
status = instances.toArray(new ObjectName[0])[0];
- assertEquals(new ObjectName(server.getMBeanName()), status);
+ assertEquals(new ObjectName(serverSync.getMBeanName()), status);
assertTrue(jmxServer.isRegistered(status));
assertEquals("primary", jmxServer.getAttribute(status, "Mode"));
@@ -78,7 +78,7 @@ public class MBeanTest extends TestBase
assertEquals(true, jmxServer.getAttribute(status, "Running"));
assertEquals(StandbyStatusMBean.STATUS_RUNNING,
jmxServer.getAttribute(status, "Status"));
} finally {
- server.close();
+ serverSync.close();
}
assertTrue(!jmxServer.isRegistered(status));
@@ -86,9 +86,9 @@ public class MBeanTest extends TestBase
@Test
public void testClientEmptyConfigNoServer() throws Exception {
- final StandbySync client = newStandbySync(storeC);
- client.start();
- client.run();
+ final StandbyClientSync clientSync = newStandbyClientSync(storeC);
+ clientSync.start();
+ clientSync.run();
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME +
",id=*");
@@ -96,7 +96,7 @@ public class MBeanTest extends TestBase
Set<ObjectName> instances = jmxServer.queryNames(status, null);
assertEquals(1, instances.size());
status = instances.toArray(new ObjectName[0])[0];
- assertEquals(new ObjectName(client.getMBeanName()), status);
+ assertEquals(new ObjectName(clientSync.getMBeanName()), status);
assertTrue(jmxServer.isRegistered(status));
String m = jmxServer.getAttribute(status, "Mode").toString();
@@ -115,7 +115,7 @@ public class MBeanTest extends TestBase
assertEquals(true, jmxServer.getAttribute(status, "Running"));
assertEquals(StandbyStatusMBean.STATUS_RUNNING,
jmxServer.getAttribute(status, "Status"));
} finally {
- client.close();
+ clientSync.close();
}
assertTrue(!jmxServer.isRegistered(status));
@@ -123,13 +123,13 @@ public class MBeanTest extends TestBase
@Test
public void testClientNoServer() throws Exception {
- System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Foo");
- final StandbySync client = newStandbySync(storeC);
- client.start();
- client.run();
+ System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Foo");
+ final StandbyClientSync clientSync = newStandbyClientSync(storeC);
+ clientSync.start();
+ clientSync.run();
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
- ObjectName status = new ObjectName(client.getMBeanName());
+ ObjectName status = new ObjectName(clientSync.getMBeanName());
try {
assertTrue(jmxServer.isRegistered(status));
assertEquals("client: Foo", jmxServer.getAttribute(status,
"Mode"));
@@ -140,7 +140,7 @@ public class MBeanTest extends TestBase
assertEquals("1", jmxServer.invoke(status, "calcFailedRequests",
null, null).toString());
assertEquals("-1", jmxServer.invoke(status,
"calcSecondsSinceLastSuccess", null, null).toString());
} finally {
- client.close();
+ clientSync.close();
}
assertTrue(!jmxServer.isRegistered(status));
@@ -148,18 +148,18 @@ public class MBeanTest extends TestBase
@Test
public void testClientAndServerEmptyConfig() throws Exception {
- final StandbyServer server = new StandbyServer(port, this.storeS);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
this.storeS);
+ serverSync.start();
- System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Bar");
- final StandbySync client = newStandbySync(storeC);
- client.start();
- client.run();
+ System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Bar");
+ final StandbyClientSync clientSync = newStandbyClientSync(storeC);
+ clientSync.start();
+ clientSync.run();
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME +
",id=*");
- ObjectName clientStatus = new ObjectName(client.getMBeanName());
- ObjectName serverStatus = new ObjectName(server.getMBeanName());
+ ObjectName clientStatus = new ObjectName(clientSync.getMBeanName());
+ ObjectName serverStatus = new ObjectName(serverSync.getMBeanName());
try {
Set<ObjectName> instances = jmxServer.queryNames(status, null);
assertEquals(3, instances.size());
@@ -224,8 +224,8 @@ public class MBeanTest extends TestBase
assertEquals(StandbyStatusMBean.STATUS_RUNNING,
jmxServer.getAttribute(clientStatus, "Status"));
} finally {
- client.close();
- server.close();
+ clientSync.close();
+ serverSync.close();
}
assertTrue(!jmxServer.isRegistered(clientStatus));
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
Mon Sep 26 09:48:06 2016
@@ -24,8 +24,8 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
@@ -49,19 +49,19 @@ public class RecoverTestIT extends TestB
NodeStore store = SegmentNodeStoreBuilders.builder(storeC).build();
addTestContent(store, "client");
- final StandbyServer server = new StandbyServer(port, storeS);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS);
+ serverSync.start();
store = SegmentNodeStoreBuilders.builder(storeS).build();
addTestContent(store, "server");
storeS.flush();
- StandbySync cl = newStandbySync(storeC);
+ StandbyClientSync cl = newStandbyClientSync(storeC);
try {
assertFalse("stores are not expected to be equal",
storeS.getHead().equals(storeC.getHead()));
cl.run();
assertEquals(storeS.getHead(), storeC.getHead());
} finally {
- server.close();
+ serverSync.close();
cl.close();
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
Mon Sep 26 09:48:06 2016
@@ -35,8 +35,8 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -65,19 +65,19 @@ public class StandbyTest extends TestBas
FileStore secondary = getSecondary();
NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
- final StandbyServer server = new StandbyServer(port, primary);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
primary);
+ serverSync.start();
byte[] data = addTestContent(store, "server", blobSize, 150);
primary.flush();
- StandbySync cl = newStandbySync(secondary);
- cl.run();
+ StandbyClientSync clientSync = newStandbyClientSync(secondary);
+ clientSync.run();
try {
assertEquals(primary.getHead(), secondary.getHead());
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
assertTrue(primary.getStats().getApproximateSize() > blobSize);
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
Mon Sep 26 09:48:06 2016
@@ -35,8 +35,8 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -91,28 +91,28 @@ public class StandbyTestIT extends TestB
FileStore secondary = getSecondary();
NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
- final StandbyServer server = new StandbyServer(port, primary);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
primary);
+ serverSync.start();
byte[] data = addTestContent(store, "server", blobSize, dataNodes);
primary.flush();
- StandbySync cl = newStandbySync(secondary);
+ StandbyClientSync clientSync = newStandbyClientSync(secondary);
try {
for (int i = 0; i < 5; i++) {
String cp = store.checkpoint(Long.MAX_VALUE);
primary.flush();
- cl.run();
+ clientSync.run();
assertEquals(primary.getHead(), secondary.getHead());
assertTrue(store.release(cp));
- cl.cleanup();
+ clientSync.cleanup();
assertTrue(secondary.getStats().getApproximateSize() >
blobSize);
}
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
assertTrue(primary.getStats().getApproximateSize() > blobSize);
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java
Mon Sep 26 09:48:06 2016
@@ -30,7 +30,7 @@ import org.apache.commons.lang3.SystemUt
import org.apache.jackrabbit.oak.commons.CIHelper;
import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
import org.junit.BeforeClass;
import org.junit.Rule;
@@ -149,16 +149,16 @@ public class TestBase {
return timeout;
}
- public StandbySync newStandbySync(FileStore store) throws Exception {
- return newStandbySync(store, port, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store) throws
Exception {
+ return newStandbyClientSync(store, port, false);
}
- public StandbySync newStandbySync(FileStore store, int port) throws
Exception {
- return newStandbySync(store, port, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store, int port)
throws Exception {
+ return newStandbyClientSync(store, port, false);
}
- public StandbySync newStandbySync(FileStore store, int port, boolean
secure) throws Exception {
- return new StandbySync(LOCALHOST, port, store, secure, timeout, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store, int port,
boolean secure) throws Exception {
+ return new StandbyClientSync(LOCALHOST, port, store, secure, timeout,
false);
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java
Mon Sep 26 09:48:06 2016
@@ -29,7 +29,7 @@ import java.util.concurrent.ScheduledExe
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
public class BenchmarkBase {
@@ -97,16 +97,16 @@ public class BenchmarkBase {
return newFileStore(directory, executor);
}
- public StandbySync newStandbyClient(FileStore store) throws Exception {
- return newStandbyClient(store, port, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store) throws
Exception {
+ return newStandbyClientSync(store, port, false);
}
- public StandbySync newStandbyClient(FileStore store, int port) throws
Exception {
- return newStandbyClient(store, port, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store, int port)
throws Exception {
+ return newStandbyClientSync(store, port, false);
}
- public StandbySync newStandbyClient(FileStore store, int port, boolean
secure) throws Exception {
- return new StandbySync(LOCALHOST, port, store, secure, timeout, false);
+ public StandbyClientSync newStandbyClientSync(FileStore store, int port,
boolean secure) throws Exception {
+ return new StandbyClientSync(LOCALHOST, port, store, secure, timeout,
false);
}
private static File createTmpTargetDir(String name) throws IOException {
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java?rev=1762301&r1=1762300&r2=1762301&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java
Mon Sep 26 09:48:06 2016
@@ -27,9 +27,9 @@ import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbySync;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -91,19 +91,19 @@ public class BulkTransferBenchmark exten
store.merge(rootbuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
storeS.flush();
- final StandbyServer server = new StandbyServer(port, storeS, useSSL);
- server.start();
+ final StandbyServerSync serverSync = new StandbyServerSync(port,
storeS, useSSL);
+ serverSync.start();
- System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Bar");
- StandbySync cl = newStandbyClient(storeC, port, useSSL);
+ System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Bar");
+ StandbyClientSync clientSync = newStandbyClientSync(storeC, port,
useSSL);
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME +
",id=*");
- ObjectName clientStatus = new ObjectName(cl.getMBeanName());
- ObjectName serverStatus = new ObjectName(server.getMBeanName());
+ ObjectName clientStatus = new ObjectName(clientSync.getMBeanName());
+ ObjectName serverStatus = new ObjectName(serverSync.getMBeanName());
long start = System.currentTimeMillis();
- cl.run();
+ clientSync.run();
try {
Set<ObjectName> instances = jmxServer.queryNames(status, null);
@@ -118,8 +118,8 @@ public class BulkTransferBenchmark exten
System.out.println("did transfer " + segments + " segments with "
+ bytes + " bytes in " + (System.currentTimeMillis() - start) / 1000 + "
seconds.");
} finally {
- server.close();
- cl.close();
+ serverSync.close();
+ clientSync.close();
}
}