This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new f5ba2f5b08 HDDS-8715. Hadoop RPC server creation renames current
thread (#4788)
f5ba2f5b08 is described below
commit f5ba2f5b089acf51f3f6766cd23b6e7142a3a149
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed May 31 09:08:55 2023 +0200
HDDS-8715. Hadoop RPC server creation renames current thread (#4788)
---
.../main/java/org/apache/hadoop/hdds/HddsUtils.java | 21 +++++++++++++++++++++
.../ozone/HddsDatanodeClientProtocolServer.java | 5 +++--
.../hdds/scm/server/StorageContainerManager.java | 21 +++++++++++----------
.../org/apache/hadoop/ozone/om/OzoneManager.java | 6 ++++--
4 files changed, 39 insertions(+), 14 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java
index 4a65ca5e6a..c26ab40368 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java
@@ -32,6 +32,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.TreeMap;
@@ -82,6 +83,7 @@ import static
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_NAMES;
import org.apache.hadoop.security.AccessControlException;
import org.apache.hadoop.security.token.SecretManager;
+import org.apache.hadoop.util.CheckedSupplier;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.util.SizeInBytes;
import org.apache.hadoop.ozone.conf.OzoneServiceConfig;
@@ -824,4 +826,23 @@ public final class HddsUtils {
}
return sortedOzoneProps;
}
+
+ /**
+ * Execute some code and ensure thread name is not changed
+ * (workaround for HADOOP-18433).
+ */
+ public static <T, E extends IOException> T preserveThreadName(
+ CheckedSupplier<T, E> supplier) throws E {
+ final Thread thread = Thread.currentThread();
+ final String threadName = thread.getName();
+
+ try {
+ return supplier.get();
+ } finally {
+ if (!Objects.equals(threadName, thread.getName())) {
+ LOG.info("Restoring thread name: {}", threadName);
+ thread.setName(threadName);
+ }
+ }
+ }
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeClientProtocolServer.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeClientProtocolServer.java
index 0b622f78e5..c18f877225 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeClientProtocolServer.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeClientProtocolServer.java
@@ -48,6 +48,7 @@ import java.util.List;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_CLIENT_ADDRESS_KEY;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_HANDLER_COUNT_DEFAULT;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_HANDLER_COUNT_KEY;
+import static org.apache.hadoop.hdds.HddsUtils.preserveThreadName;
import static
org.apache.hadoop.hdds.protocol.DatanodeDetails.Port.Name.CLIENT_RPC;
/**
@@ -162,8 +163,8 @@ public class HddsDatanodeClientProtocolServer extends
ServiceRuntimeInfoImpl
.ReconfigureProtocolService.newReflectiveBlockingService(
reconfigureServerProtocol);
- return startRpcServer(configuration, rpcAddress,
- ReconfigureProtocolPB.class, reconfigureService, handlerCount);
+ return preserveThreadName(() -> startRpcServer(configuration, rpcAddress,
+ ReconfigureProtocolPB.class, reconfigureService, handlerCount));
}
/**
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
index e6880add77..6a255c7cf9 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
@@ -187,6 +187,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import static org.apache.hadoop.hdds.HddsUtils.preserveThreadName;
import static
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_EVENT_REPORT_EXEC_WAIT_THRESHOLD_DEFAULT;
import static
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_EVENT_REPORT_QUEUE_WAIT_THRESHOLD_DEFAULT;
import static
org.apache.hadoop.hdds.security.x509.certificate.authority.CertificateStore.CertType.VALID_CERTS;
@@ -1078,16 +1079,16 @@ public final class StorageContainerManager extends
ServiceRuntimeInfoImpl
BlockingService instance,
int handlerCount)
throws IOException {
- RPC.Server rpcServer =
- new RPC.Builder(conf)
- .setProtocol(protocol)
- .setInstance(instance)
- .setBindAddress(addr.getHostString())
- .setPort(addr.getPort())
- .setNumHandlers(handlerCount)
- .setVerbose(false)
- .setSecretManager(null)
- .build();
+
+ RPC.Server rpcServer = preserveThreadName(() -> new RPC.Builder(conf)
+ .setProtocol(protocol)
+ .setInstance(instance)
+ .setBindAddress(addr.getHostString())
+ .setPort(addr.getPort())
+ .setNumHandlers(handlerCount)
+ .setVerbose(false)
+ .setSecretManager(null)
+ .build());
HddsServerUtil.addPBProtocol(conf, protocol, instance, rpcServer);
return rpcServer;
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index d45b5d6e04..45982556ce 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -230,6 +230,7 @@ import static
org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_TRASH_INTERV
import static org.apache.hadoop.hdds.HddsConfigKeys.HDDS_BLOCK_TOKEN_ENABLED;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_BLOCK_TOKEN_ENABLED_DEFAULT;
import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForClients;
+import static org.apache.hadoop.hdds.HddsUtils.preserveThreadName;
import static org.apache.hadoop.hdds.server.ServerUtils.updateRPCListenAddress;
import static org.apache.hadoop.hdds.utils.HAUtils.getScmInfo;
import static org.apache.hadoop.ozone.OmUtils.MAX_TRXN_ID;
@@ -1262,7 +1263,8 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
BlockingService reconfigureProtocolService,
int handlerCount)
throws IOException {
- RPC.Server rpcServer = new RPC.Builder(conf)
+
+ RPC.Server rpcServer = preserveThreadName(() -> new RPC.Builder(conf)
.setProtocol(OzoneManagerProtocolPB.class)
.setInstance(clientProtocolService)
.setBindAddress(addr.getHostString())
@@ -1270,7 +1272,7 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
.setNumHandlers(handlerCount)
.setVerbose(false)
.setSecretManager(delegationTokenMgr)
- .build();
+ .build());
HddsServerUtil.addPBProtocol(conf, OMInterServiceProtocolPB.class,
interOMProtocolService, rpcServer);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]