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);


Reply via email to