Repository: helix Updated Branches: refs/heads/master 107952ee7 -> a6bdb3c22
Add logs for RoutingTableProvider and HelixAdmin Project: http://git-wip-us.apache.org/repos/asf/helix/repo Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/a6bdb3c2 Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/a6bdb3c2 Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/a6bdb3c2 Branch: refs/heads/master Commit: a6bdb3c2252a11a51939e1e06083a24ccf5a2ac2 Parents: 107952e Author: Junkai Xue <[email protected]> Authored: Thu Apr 19 18:19:51 2018 -0700 Committer: Junkai Xue <[email protected]> Committed: Thu Apr 19 18:19:51 2018 -0700 ---------------------------------------------------------------------- .../apache/helix/manager/zk/ZKHelixAdmin.java | 64 +++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/helix/blob/a6bdb3c2/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java ---------------------------------------------------------------------- diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java index 8688665..3d708e5 100644 --- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java +++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java @@ -72,6 +72,7 @@ import org.apache.helix.model.Message.MessageType; import org.apache.helix.model.PauseSignal; import org.apache.helix.model.StateModelDefinition; import org.apache.helix.tools.DefaultIdealStateCalculator; +import org.apache.helix.util.HelixUtil; import org.apache.helix.util.RebalanceUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -98,6 +99,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addInstance(String clusterName, InstanceConfig instanceConfig) { + logger.info("Add instance {} to cluster {}.", instanceConfig.getInstanceName(), clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } @@ -120,6 +122,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void dropInstance(String clusterName, InstanceConfig instanceConfig) { + logger.info("Drop instance {} from cluster {}.", instanceConfig.getInstanceName(), clusterName); String instanceName = instanceConfig.getInstanceName(); String instanceConfigPath = PropertyPathBuilder.instanceConfig(clusterName, instanceName); @@ -150,6 +153,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public InstanceConfig getInstanceConfig(String clusterName, String instanceName) { + logger.info("Get instance config for instance {} from cluster {}.", instanceName, clusterName); String instanceConfigPath = PropertyPathBuilder.instanceConfig(clusterName, instanceName); if (!_zkClient.exists(instanceConfigPath)) { throw new HelixException( @@ -166,6 +170,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public boolean setInstanceConfig(String clusterName, String instanceName, InstanceConfig newInstanceConfig) { + logger.info("Set instance config for instance {} to cluster {} with new InstanceConfig {}.", + instanceName, clusterName, + newInstanceConfig == null ? "NULL" : newInstanceConfig.toString()); String instanceConfigPath = PropertyPathBuilder.getPath(PropertyType.CONFIGS, clusterName, HelixConfigScope.ConfigScopeProperty.PARTICIPANT.toString(), instanceName); if (!_zkClient.exists(instanceConfigPath)) { @@ -191,6 +198,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enableInstance(final String clusterName, final String instanceName, final boolean enabled) { + logger.info("{} instance {} in cluster {}.", enabled ? "Enable" : "Disable", instanceName, + clusterName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<>(_zkClient); enableSingleInstance(clusterName, instanceName, enabled, baseAccessor); // TODO: Reenable this after storage node bug fixed. @@ -205,6 +214,8 @@ public class ZKHelixAdmin implements HelixAdmin { if (true) { throw new HelixException("Current batch enable/disable instances are temporarily disabled!"); } + logger.info("Batch {} instances {} in cluster {}.", enabled ? "enable" : "disable", + HelixUtil.serializeByComma(instances), clusterName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<>(_zkClient); if (enabled) { for (String instance : instances) { @@ -217,6 +228,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enableResource(final String clusterName, final String resourceName, final boolean enabled) { + logger.info("{} resource {} in cluster {}.", enabled ? "Enable" : "Disable", resourceName, + clusterName); String path = PropertyPathBuilder.idealState(clusterName, resourceName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkClient); if (!baseAccessor.exists(path, 0)) { @@ -240,6 +253,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enablePartition(final boolean enabled, final String clusterName, final String instanceName, final String resourceName, final List<String> partitionNames) { + logger.info("{} partitions {} for resource {} on instance {} in cluster {}.", + enabled ? "Enable" : "Disable", HelixUtil.serializeByComma(partitionNames), resourceName, + instanceName, clusterName); String path = PropertyPathBuilder.instanceConfig(clusterName, instanceName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkClient); @@ -319,6 +335,8 @@ public class ZKHelixAdmin implements HelixAdmin { */ @Override public void enableCluster(String clusterName, boolean enabled, String reason) { + logger.info("{} cluster {} for reason {}.", enabled ? "Enable" : "Disable", clusterName, + reason == null ? "NULL" : reason); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -343,6 +361,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enableMaintenanceMode(String clusterName, boolean enabled, String reason) { + logger.info("Cluster {} {} maintenance mode for reason {}.", enabled ? "enters" : "exits", + clusterName, reason == null ? "NULL" : reason); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -363,6 +383,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void resetPartition(String clusterName, String instanceName, String resourceName, List<String> partitionNames) { + logger.info("Reset partitions {} for resource {} on instance {} in cluster {}.", + partitionNames == null ? "NULL" : HelixUtil.serializeByComma(partitionNames), resourceName, + instanceName, clusterName); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -479,6 +502,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void resetInstance(String clusterName, List<String> instanceNames) { // TODO: not mp-safe + logger.info("Reset instances {} in cluster {}.", + instanceNames == null ? "NULL" : HelixUtil.serializeByComma(instanceNames), clusterName); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -505,6 +530,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void resetResource(String clusterName, List<String> resourceNames) { // TODO: not mp-safe + logger.info("Reset resources {} in cluster {}.", + resourceNames == null ? "NULL" : HelixUtil.serializeByComma(resourceNames), clusterName); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -546,6 +573,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public boolean addCluster(String clusterName, boolean recreateIfExists) { + logger.info("Add cluster {}.", clusterName); String root = "/" + clusterName; if (_zkClient.exists(root)) { @@ -668,6 +696,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addResource(String clusterName, String resourceName, IdealState idealstate) { + logger.info("Add resource {} in cluster {}.", resourceName, clusterName); String stateModelRef = idealstate.getStateModelDefRef(); String stateModelDefPath = PropertyPathBuilder.stateModelDef(clusterName, stateModelRef); if (!_zkClient.exists(stateModelDefPath)) { @@ -772,6 +801,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void setResourceIdealState(String clusterName, String resourceName, IdealState idealState) { + logger + .info("Set IdealState for resource {} in cluster {} with new IdealState {}.", resourceName, + clusterName, idealState == null ? "NULL" : idealState.toString()); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -796,6 +828,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addStateModelDef(String clusterName, String stateModelDef, StateModelDefinition stateModel, boolean recreateIfExists) { + logger + .info("Add StateModelDef {} in cluster {} with StateModel {}.", stateModelDef, clusterName, + stateModel == null ? "NULL" : stateModel.toString()); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } @@ -820,6 +855,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void dropResource(String clusterName, String resourceName) { + logger.info("Drop resource {} from cluster {}", resourceName, clusterName); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -845,7 +881,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void dropCluster(String clusterName) { - logger.info("Deleting cluster " + clusterName); + logger.info("Deleting cluster {}.", clusterName); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); @@ -865,6 +901,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addClusterToGrandCluster(String clusterName, String grandCluster) { + logger.info("Add cluster {} to grand cluster {}.", clusterName, grandCluster); if (!ZKUtil.isClusterSetup(grandCluster, _zkClient)) { throw new HelixException("Grand cluster " + grandCluster + " is not setup yet"); } @@ -899,6 +936,7 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void setConfig(HelixConfigScope scope, Map<String, String> properties) { + logger.info("Set configs with keys "); _configAccessor.set(scope, properties); } @@ -950,6 +988,8 @@ public class ZKHelixAdmin implements HelixAdmin { void rebalance(String clusterName, String resourceName, int replica, String keyPrefix, List<String> instanceNames, String groupId) { + logger.info("Rebalance resource {} with replica {} in cluster {}.", resourceName, replica, + clusterName); // ensure we get the same idealState with the same set of instances Collections.sort(instanceNames); @@ -1032,6 +1072,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addIdealState(String clusterName, String resourceName, String idealStateFile) throws IOException { + logger.info("Add IdealState for resource {} to cluster {} by file name {}.", resourceName, + clusterName, idealStateFile); ZNRecord idealStateRecord = (ZNRecord) (new ZNRecordSerializer().deserialize(readFile(idealStateFile))); if (idealStateRecord.getId() == null || !idealStateRecord.getId().equals(resourceName)) { @@ -1076,6 +1118,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void setConstraint(String clusterName, final ConstraintType constraintType, final String constraintId, final ConstraintItem constraintItem) { + logger.info("Set constraint type {} with constraint id {} for cluster {}.", constraintType, + constraintId, clusterName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkClient); Builder keyBuilder = new Builder(clusterName); @@ -1097,6 +1141,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void removeConstraint(String clusterName, final ConstraintType constraintType, final String constraintId) { + logger.info("Remove constraint type {} with constraint id {} for cluster {}.", constraintType, + constraintId, clusterName); BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkClient); Builder keyBuilder = new Builder(clusterName); @@ -1139,6 +1185,9 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void rebalance(String clusterName, IdealState currentIdealState, List<String> instanceNames) { + logger.info("Rebalance resource {} in cluster {} with IdealState {}.", + currentIdealState.getResourceName(), clusterName, + currentIdealState == null ? "NULL" : currentIdealState.toString()); Set<String> activeInstances = new HashSet<String>(); for (String partition : currentIdealState.getPartitionSet()) { activeInstances.addAll(currentIdealState.getRecord().getListField(partition)); @@ -1190,13 +1239,14 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void addInstanceTag(String clusterName, String instanceName, String tag) { + logger + .info("Add instance tag {} for instance {} in cluster {}.", tag, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { - throw new HelixException( - "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); + throw new HelixException("cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); @@ -1209,6 +1259,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void removeInstanceTag(String clusterName, String instanceName, String tag) { + logger.info("Remove instance tag {} for instance {} in cluster {}.", tag, instanceName, + clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } @@ -1228,6 +1280,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void setInstanceZoneId(String clusterName, String instanceName, String zoneId) { + logger.info("Set instance zoneId {} for instance {} in cluster {}.", zoneId, instanceName, + clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } @@ -1247,6 +1301,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enableBatchMessageMode(String clusterName, boolean enabled) { + logger + .info("{} batch message mode for cluster {}.", enabled ? "Enable" : "Disable", clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } @@ -1260,6 +1316,8 @@ public class ZKHelixAdmin implements HelixAdmin { @Override public void enableBatchMessageMode(String clusterName, String resourceName, boolean enabled) { + logger.info("{} batch message mode for resource {} in cluster {}.", + enabled ? "Enable" : "Disable", resourceName, clusterName); // TODO: Change IdealState to ResourceConfig when configs are migrated to ResourceConfig IdealState idealState = getResourceIdealState(clusterName, resourceName); if (idealState == null) {
