Author: frm
Date: Tue Apr 11 14:07:00 2017
New Revision: 1790977
URL: http://svn.apache.org/viewvc?rev=1790977&view=rev
Log:
OAK-6068 - Assign meaningful names to cold standby threads
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.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=1790977&r1=1790976&r2=1790977&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
Tue Apr 11 14:07:00 2017
@@ -25,6 +25,7 @@ import java.lang.management.ManagementFa
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nonnull;
import javax.management.MBeanServer;
@@ -33,6 +34,7 @@ import javax.management.StandardMBean;
import com.google.common.base.Supplier;
import io.netty.channel.nio.NioEventLoopGroup;
+import org.apache.jackrabbit.core.data.util.NamedThreadFactory;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.standby.jmx.ClientStandbyStatusMBean;
import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
@@ -46,6 +48,8 @@ public final class StandbyClientSync imp
private static final Logger log =
LoggerFactory.getLogger(StandbyClientSync.class);
+ private static final AtomicInteger standbyRunCounter = new AtomicInteger();
+
private final String host;
private final int port;
@@ -92,7 +96,7 @@ public final class StandbyClientSync imp
this.fileStore = store;
String s = System.getProperty(CLIENT_ID_PROPERTY_NAME);
this.observer = new CommunicationObserver((s == null || s.isEmpty()) ?
UUID.randomUUID().toString() : s);
- group = new NioEventLoopGroup();
+ group = new NioEventLoopGroup(0, new NamedThreadFactory("standby"));
final MBeanServer jmxServer =
ManagementFactory.getPlatformMBeanServer();
try {
@@ -123,46 +127,54 @@ public final class StandbyClientSync imp
@Override
public void run() {
- if (!isRunning()) {
- // manually stopped
- return;
- }
+ String name = Thread.currentThread().getName();
- state = STATUS_STARTING;
+ try {
+ Thread.currentThread().setName("standby-run-" +
standbyRunCounter.incrementAndGet());
- synchronized (sync) {
- if (active) {
+ if (!isRunning()) {
+ // manually stopped
return;
}
- state = STATUS_RUNNING;
- active = true;
- }
- try {
- long startTimestamp = System.currentTimeMillis();
- try (StandbyClient client = new StandbyClient(group,
observer.getID(), secure, readTimeoutMs)) {
- client.connect(host, port);
-
- int genBefore = headGeneration(fileStore);
- new StandbyClientSyncExecution(fileStore, client,
newRunningSupplier()).execute();
- int genAfter = headGeneration(fileStore);
-
- if (autoClean && (genAfter > genBefore)) {
- log.info("New head generation detected (prevHeadGen: {}
newHeadGen: {}), running cleanup.", genBefore, genAfter);
- cleanupAndRemove();
+ state = STATUS_STARTING;
+
+ synchronized (sync) {
+ if (active) {
+ return;
}
+ state = STATUS_RUNNING;
+ active = true;
}
- this.failedRequests = 0;
- this.syncStartTimestamp = startTimestamp;
- this.syncEndTimestamp = System.currentTimeMillis();
- this.lastSuccessfulRequest = syncEndTimestamp / 1000;
- } catch (Exception e) {
- this.failedRequests++;
- log.error("Failed synchronizing state.", e);
- } finally {
- synchronized (this.sync) {
- this.active = false;
+
+ try {
+ long startTimestamp = System.currentTimeMillis();
+ try (StandbyClient client = new StandbyClient(group,
observer.getID(), secure, readTimeoutMs)) {
+ client.connect(host, port);
+
+ int genBefore = headGeneration(fileStore);
+ new StandbyClientSyncExecution(fileStore, client,
newRunningSupplier()).execute();
+ int genAfter = headGeneration(fileStore);
+
+ if (autoClean && (genAfter > genBefore)) {
+ log.info("New head generation detected (prevHeadGen:
{} newHeadGen: {}), running cleanup.", genBefore, genAfter);
+ cleanupAndRemove();
+ }
+ }
+ this.failedRequests = 0;
+ this.syncStartTimestamp = startTimestamp;
+ this.syncEndTimestamp = System.currentTimeMillis();
+ this.lastSuccessfulRequest = syncEndTimestamp / 1000;
+ } catch (Exception e) {
+ this.failedRequests++;
+ log.error("Failed synchronizing state.", e);
+ } finally {
+ synchronized (this.sync) {
+ this.active = false;
+ }
}
+ } finally {
+ Thread.currentThread().setName(name);
}
}
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=1790977&r1=1790976&r2=1790977&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
Tue Apr 11 14:07:00 2017
@@ -40,6 +40,7 @@ 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.core.data.util.NamedThreadFactory;
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;
@@ -126,8 +127,8 @@ class StandbyServer implements AutoClose
sslContext = SslContextBuilder.forServer(ssc.certificate(),
ssc.privateKey()).build();
}
- bossGroup = new NioEventLoopGroup(1);
- workerGroup = new NioEventLoopGroup();
+ bossGroup = new NioEventLoopGroup(1, new
NamedThreadFactory("primary-run"));
+ workerGroup = new NioEventLoopGroup(0, new
NamedThreadFactory("primary"));
b = new ServerBootstrap();
b.group(bossGroup, workerGroup);