You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ji...@apache.org on 2020/11/18 19:04:27 UTC
[helix] 18/18: Return "name" field as VM name in Azure environment
(#1340)
This is an automated email from the ASF dual-hosted git repository.
jiajunwang pushed a commit to branch helix-0.9.x
in repository https://gitbox.apache.org/repos/asf/helix.git
commit 681fdbb20c4c4fc220c6d5c5d9621801e84c9802
Author: Meng Zhang <mn...@linkedin.com>
AuthorDate: Wed Sep 2 23:02:16 2020 -0700
Return "name" field as VM name in Azure environment (#1340)
* Return name field as VM name in Azure envrionment
* fix comment
* fix test
---
.../src/main/java/org/apache/helix/HelixCloudProperty.java | 8 ++++----
.../azure/AzureCloudInstanceInformationProcessor.java | 14 +++++++-------
.../org/apache/helix/manager/zk/ParticipantManager.java | 4 ++--
.../java/org/apache/helix/util/InstanceValidationUtil.java | 14 +++++++++++++-
.../cloud/TestAzureCloudInstanceInformationProcessor.java | 2 +-
5 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/helix-core/src/main/java/org/apache/helix/HelixCloudProperty.java b/helix-core/src/main/java/org/apache/helix/HelixCloudProperty.java
index 554c595..6cbc2e1 100644
--- a/helix-core/src/main/java/org/apache/helix/HelixCloudProperty.java
+++ b/helix-core/src/main/java/org/apache/helix/HelixCloudProperty.java
@@ -37,7 +37,7 @@ public class HelixCloudProperty {
private static final Logger LOG = LoggerFactory.getLogger(HelixCloudProperty.class.getName());
private static final String AZURE_CLOUD_PROPERTY_FILE = SystemPropertyKeys.AZURE_CLOUD_PROPERTIES;
private static final String CLOUD_INFO_SOURCE = "cloud_info_source";
- private static final String CLOUD_INFO_PROCESSFOR_NAME = "cloud_info_processor_name";
+ private static final String CLOUD_INFO_PROCESSOR_NAME = "cloud_info_processor_name";
private static final String CLOUD_MAX_RETRY = "cloud_max_retry";
private static final String CONNECTION_TIMEOUT_MS = "connection_timeout_ms";
private static final String REQUEST_TIMEOUT_MS = "request_timeout_ms";
@@ -74,7 +74,7 @@ public class HelixCloudProperty {
* @param
*/
public HelixCloudProperty(CloudConfig cloudConfig) {
- setCloudEndabled(cloudConfig.isCloudEnabled());
+ setCloudEnabled(cloudConfig.isCloudEnabled());
if (cloudConfig.isCloudEnabled()) {
setCloudId(cloudConfig.getCloudID());
setCloudProvider(cloudConfig.getCloudProvider());
@@ -93,7 +93,7 @@ public class HelixCloudProperty {
LOG.info("Successfully loaded Helix Azure cloud properties: {}", azureProperties);
setCloudInfoSources(
Collections.singletonList(azureProperties.getProperty(CLOUD_INFO_SOURCE)));
- setCloudInfoProcessorName(azureProperties.getProperty(CLOUD_INFO_PROCESSFOR_NAME));
+ setCloudInfoProcessorName(azureProperties.getProperty(CLOUD_INFO_PROCESSOR_NAME));
setCloudMaxRetry(Integer.valueOf(azureProperties.getProperty(CLOUD_MAX_RETRY)));
setCloudConnectionTimeout(Long.valueOf(azureProperties.getProperty(CONNECTION_TIMEOUT_MS)));
setCloudRequestTimeout(Long.valueOf(azureProperties.getProperty(REQUEST_TIMEOUT_MS)));
@@ -145,7 +145,7 @@ public class HelixCloudProperty {
return _customizedCloudProperties;
}
- public void setCloudEndabled(boolean isCloudEnabled) {
+ public void setCloudEnabled(boolean isCloudEnabled) {
_isCloudEnabled = isCloudEnabled;
}
diff --git a/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java b/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java
index c943664..b11e943 100644
--- a/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java
+++ b/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java
@@ -48,15 +48,15 @@ public class AzureCloudInstanceInformationProcessor
LoggerFactory.getLogger(AzureCloudInstanceInformationProcessor.class);
private final CloseableHttpClient _closeableHttpClient;
private final HelixCloudProperty _helixCloudProperty;
- private final String COMPUTE = "compute";
- private final String INSTANCE_NAME = "vmId";
- private final String DOMAIN = "platformFaultDomain";
- private final String INSTANCE_SET_NAME = "vmScaleSetName";
+ private static final String COMPUTE = "compute";
+ private static final String INSTANCE_NAME = "name";
+ private static final String DOMAIN = "platformFaultDomain";
+ private static final String INSTANCE_SET_NAME = "vmScaleSetName";
public AzureCloudInstanceInformationProcessor(HelixCloudProperty helixCloudProperty) {
_helixCloudProperty = helixCloudProperty;
- RequestConfig requestConifg = RequestConfig.custom()
+ RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout((int) helixCloudProperty.getCloudRequestTimeout())
.setConnectTimeout((int) helixCloudProperty.getCloudConnectionTimeout()).build();
@@ -69,7 +69,7 @@ public class AzureCloudInstanceInformationProcessor
};
//TODO: we should regularize the way how httpClient should be used throughout Helix. e.g. Helix-rest could also use in the same way
- _closeableHttpClient = HttpClients.custom().setDefaultRequestConfig(requestConifg)
+ _closeableHttpClient = HttpClients.custom().setDefaultRequestConfig(requestConfig)
.setRetryHandler(httpRequestRetryHandler).build();
}
@@ -153,7 +153,7 @@ public class AzureCloudInstanceInformationProcessor
}
} catch (IOException e) {
throw new HelixException(
- String.format("Error in parsing cloud instance information: %s", response, e));
+ String.format("Error in parsing cloud instance information: %s", response), e);
}
return azureCloudInstanceInformation;
}
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ParticipantManager.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ParticipantManager.java
index 7063c20..bdf820f 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ParticipantManager.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ParticipantManager.java
@@ -143,7 +143,7 @@ public class ParticipantManager {
boolean autoJoin = false;
boolean autoRegistration = false;
- // Read "allowParticipantAutoJoin" flag to see if an instance can auto join to the cluster
+ // Read "allowParticipantAutoJoin" field to see if an instance can auto join to the cluster
try {
HelixConfigScope scope = new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER)
.forCluster(_manager.getClusterName()).build();
@@ -160,7 +160,7 @@ public class ParticipantManager {
try {
autoRegistration =
Boolean.valueOf(_helixManagerProperty.getHelixCloudProperty().getCloudEnabled());
- LOG.info("instance: " + _instanceName + " auto-register " + _clusterName + " is "
+ LOG.info("instance: " + _instanceName + " auto-registering " + _clusterName + " is "
+ autoRegistration);
} catch (Exception e) {
LOG.info("auto registration is false for cluster" + _clusterName);
diff --git a/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java b/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java
index 30b733d..b80487d 100644
--- a/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java
+++ b/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java
@@ -155,7 +155,19 @@ public class InstanceValidationUtil {
*/
public static boolean hasValidConfig(HelixDataAccessor dataAccessor, String clusterId,
String instanceName) {
- PropertyKey propertyKey = dataAccessor.keyBuilder().instanceConfig(instanceName);
+ PropertyKey.Builder keyBuilder = dataAccessor.keyBuilder();
+ ClusterConfig clusterConfig = dataAccessor.getProperty(keyBuilder.clusterConfig());
+ if (clusterConfig == null) {
+ _logger.error("Cluster config is missing in cluster " + clusterId);
+ return false;
+ }
+ if (!clusterConfig.isPersistIntermediateAssignment()) {
+ _logger.error(
+ "Cluster config %s is not turned on, which is required for instance stability check.",
+ ClusterConfig.ClusterConfigProperty.PERSIST_INTERMEDIATE_ASSIGNMENT.toString());
+ return false;
+ }
+ PropertyKey propertyKey = keyBuilder.instanceConfig(instanceName);
InstanceConfig instanceConfig = dataAccessor.getProperty(propertyKey);
return instanceConfig != null && instanceConfig.isValid();
}
diff --git a/helix-core/src/test/java/org/apache/helix/cloud/TestAzureCloudInstanceInformationProcessor.java b/helix-core/src/test/java/org/apache/helix/cloud/TestAzureCloudInstanceInformationProcessor.java
index 350c9a9..4bad9d7 100644
--- a/helix-core/src/test/java/org/apache/helix/cloud/TestAzureCloudInstanceInformationProcessor.java
+++ b/helix-core/src/test/java/org/apache/helix/cloud/TestAzureCloudInstanceInformationProcessor.java
@@ -64,6 +64,6 @@ public class TestAzureCloudInstanceInformationProcessor extends MockHttpClient {
Assert.assertEquals(
azureCloudInstanceInformation
.get(CloudInstanceInformation.CloudInstanceField.INSTANCE_NAME.name()),
- "d2b921cc-c16c-41f7-a86d-a445eac6ec26");
+ "test-helix_1");
}
}