This is an automated email from the ASF dual-hosted git repository. xyao pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new ec34cee HDDS-2047. Datanodes fail to come up after 10 retries in a secure env… (#1379) ec34cee is described below commit ec34cee5e37ca48bf61403655eba8b89dba0ed57 Author: Xiaoyu Yao <x...@apache.org> AuthorDate: Fri Aug 30 09:27:37 2019 -0700 HDDS-2047. Datanodes fail to come up after 10 retries in a secure env… (#1379) --- .../java/org/apache/hadoop/hdds/HddsUtils.java | 15 ++++++++---- .../apache/hadoop/ozone/HddsDatanodeService.java | 3 +-- .../org/apache/hadoop/ozone/om/OzoneManager.java | 28 +--------------------- 3 files changed, 13 insertions(+), 33 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 3670cfc..6ff166a 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 @@ -30,6 +30,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Optional; import java.util.TimeZone; +import java.util.concurrent.TimeUnit; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; @@ -43,6 +44,8 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol; import org.apache.hadoop.hdds.scm.protocolPB.ScmBlockLocationProtocolPB; import org.apache.hadoop.hdfs.DFSConfigKeys; +import org.apache.hadoop.io.retry.RetryPolicies; +import org.apache.hadoop.io.retry.RetryPolicy; import org.apache.hadoop.ipc.Client; import org.apache.hadoop.ipc.ProtobufRpcEngine; import org.apache.hadoop.ipc.RPC; @@ -177,23 +180,27 @@ public final class HddsUtils { /** * Create a scm security client. * @param conf - Ozone configuration. - * @param address - inet socket address of scm. * * @return {@link SCMSecurityProtocol} * @throws IOException */ public static SCMSecurityProtocolClientSideTranslatorPB getScmSecurityClient( - OzoneConfiguration conf, InetSocketAddress address) throws IOException { + OzoneConfiguration conf) throws IOException { RPC.setProtocolEngine(conf, SCMSecurityProtocolPB.class, ProtobufRpcEngine.class); long scmVersion = RPC.getProtocolVersion(ScmBlockLocationProtocolPB.class); + InetSocketAddress address = + getScmAddressForSecurityProtocol(conf); + RetryPolicy retryPolicy = + RetryPolicies.retryForeverWithFixedSleep( + 1000, TimeUnit.MILLISECONDS); SCMSecurityProtocolClientSideTranslatorPB scmSecurityClient = new SCMSecurityProtocolClientSideTranslatorPB( - RPC.getProxy(SCMSecurityProtocolPB.class, scmVersion, + RPC.getProtocolProxy(SCMSecurityProtocolPB.class, scmVersion, address, UserGroupInformation.getCurrentUser(), conf, NetUtils.getDefaultSocketFactory(conf), - Client.getRpcTimeout(conf))); + Client.getRpcTimeout(conf), retryPolicy).getProxy()); return scmSecurityClient; } diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java index f43281c..b13c37d 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java @@ -272,8 +272,7 @@ public class HddsDatanodeService extends GenericCli implements ServicePlugin { PKCS10CertificationRequest csr = getCSR(config); // TODO: For SCM CA we should fetch certificate from multiple SCMs. SCMSecurityProtocolClientSideTranslatorPB secureScmClient = - HddsUtils.getScmSecurityClient(config, - HddsUtils.getScmAddressForSecurityProtocol(config)); + HddsUtils.getScmSecurityClient(config); SCMGetCertResponseProto response = secureScmClient. getDataNodeCertificateChain(datanodeDetails.getProtoBufMessage(), getEncodedString(csr)); 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 a2e958f..48b095c 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 @@ -48,10 +48,8 @@ import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.DatanodeDetails; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; -import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol; import org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto; import org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB; -import org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolPB; import org.apache.hadoop.hdds.scm.ScmInfo; import org.apache.hadoop.hdds.scm.container.common.helpers.ExcludeList; import org.apache.hadoop.hdds.scm.protocol.ScmBlockLocationProtocol; @@ -183,7 +181,6 @@ 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.getScmAddressForBlockClients; import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForClients; -import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForSecurityProtocol; import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState.HEALTHY; import static org.apache.hadoop.hdds.security.x509.certificates.utils.CertificateSignRequest.getEncodedString; import static org.apache.hadoop.hdds.server.ServerUtils.updateRPCListenAddress; @@ -952,29 +949,6 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl } /** - * Create a scm security client, used to get SCM signed certificate. - * - * @return {@link SCMSecurityProtocol} - * @throws IOException - */ - private static SCMSecurityProtocolClientSideTranslatorPB - getScmSecurityClient(OzoneConfiguration conf) throws IOException { - RPC.setProtocolEngine(conf, SCMSecurityProtocolPB.class, - ProtobufRpcEngine.class); - long scmVersion = - RPC.getProtocolVersion(ScmBlockLocationProtocolPB.class); - InetSocketAddress scmSecurityProtoAdd = - getScmAddressForSecurityProtocol(conf); - SCMSecurityProtocolClientSideTranslatorPB scmSecurityClient = - new SCMSecurityProtocolClientSideTranslatorPB( - RPC.getProxy(SCMSecurityProtocolPB.class, scmVersion, - scmSecurityProtoAdd, UserGroupInformation.getCurrentUser(), - conf, NetUtils.getDefaultSocketFactory(conf), - Client.getRpcTimeout(conf))); - return scmSecurityClient; - } - - /** * Returns a scm container client. * * @return {@link StorageContainerLocationProtocol} @@ -1563,7 +1537,7 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl omDetailsProtoBuilder.build(); LOG.info("OzoneManager ports added:{}", omDetailsProto.getPortsList()); SCMSecurityProtocolClientSideTranslatorPB secureScmClient = - getScmSecurityClient(config); + HddsUtils.getScmSecurityClient(config); SCMGetCertResponseProto response = secureScmClient. getOMCertChain(omDetailsProto, getEncodedString(csr)); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org