private boolean hasDisabledInstances(String logTag, List<String> instances) { boolean hasDisabled = false; for (String instance : instances) { if (!helix.getInstanceConfig(zkPath, instance).getInstanceEnabled()) { LOGGER.error("{} instance: {} is disabled", logTag, instance); hasDisabled = true; } } return hasDisabled; }
private void enableInstance(String instance, boolean enabled) { // Disable one node, no partition should be moved. long currentTime = System.currentTimeMillis(); _gSetupTool.getClusterManagementTool().enableInstance(CLUSTER_NAME, instance, enabled); InstanceConfig instanceConfig = _configAccessor.getInstanceConfig(CLUSTER_NAME, instance); Assert.assertEquals(instanceConfig.getInstanceEnabled(), enabled); Assert.assertTrue(instanceConfig.getInstanceEnabledTime() >= currentTime); Assert.assertTrue(instanceConfig.getInstanceEnabledTime() <= currentTime + 100); } }
/** * Returns the enabled instances in the cluster with the given tag. * * TODO: refactor code to use this method over {@link #getEnabledInstancesWithTag(HelixManager, String)} if applicable * to reuse instance configs in order to reduce ZK accesses */ public static List<String> getEnabledInstancesWithTag(List<InstanceConfig> instanceConfigs, String tag) { List<String> enabledInstancesWithTag = new ArrayList<>(); for (InstanceConfig instanceConfig : instanceConfigs) { if (instanceConfig.getInstanceEnabled() && instanceConfig.containsTag(tag)) { enabledInstancesWithTag.add(instanceConfig.getInstanceName()); } } return enabledInstancesWithTag; }
if (!instanceConfig.getInstanceEnabled() || (clusterConfig.getDisabledInstances() != null && clusterConfig.getDisabledInstances().containsKey(instance))) { long disabledTime = instanceConfig.getInstanceEnabledTime();
/** * Returns True iff: * - The given instance is disabled in Helix. * - The instance is being shutdown. * False otherwise * * @param instanceName Name of instance to check. * @return True if instance is disabled in helix, or is being shutdown, False otherwise. */ public boolean isInactive(String instanceName) { InstanceConfig instanceConfig = _instanceConfigMap.get(instanceName); if (instanceConfig == null) { LOGGER.error("Instance config for instance '{}' does not exist", instanceName); return true; } if (!instanceConfig.getInstanceEnabled()) { LOGGER.info("Instance '{}' is disabled", instanceName); return true; } if (Boolean .parseBoolean(instanceConfig.getRecord().getSimpleField(CommonConstants.Helix.IS_SHUTDOWN_IN_PROGRESS))) { LOGGER.info("Instance '{}' is shutting down", instanceName); return true; } return false; } }
if (!instanceConfig.getInstanceEnabled() || (clusterConfig.getDisabledInstances() != null && clusterConfig.getDisabledInstances().containsKey(instance))) { long disabledTime = instanceConfig.getInstanceEnabledTime();
@GET @Path("/instances/{instanceName}") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "Get instance information", produces = MediaType.APPLICATION_JSON) @ApiResponses(value = {@ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 404, message = "Instance not found"), @ApiResponse(code = 500, message = "Internal error")}) public String getInstance( @ApiParam(value = "Instance name", required = true, example = "Server_a.b.com_20000 | Broker_my.broker.com_30000") @PathParam("instanceName") String instanceName) { InstanceConfig instanceConfig = pinotHelixResourceManager.getHelixInstanceConfig(instanceName); if (instanceConfig == null) { throw new ControllerApplicationException(LOGGER, "Instance " + instanceName + " not found", Response.Status.NOT_FOUND); } ObjectNode response = JsonUtils.newObjectNode(); response.put("instanceName", instanceConfig.getInstanceName()); response.put("hostName", instanceConfig.getHostName()); response.put("enabled", instanceConfig.getInstanceEnabled()); response.put("port", instanceConfig.getPort()); response.set("tags", JsonUtils.objectToJsonNode(instanceConfig.getTags())); return response.toString(); }
boolean wasEnabled = previousInstanceConfig.getInstanceEnabled(); boolean isEnabled = currentInstanceConfig.getInstanceEnabled();
private void updateDisabledInstances() { // Move the calculating disabled instances to refresh _disabledInstanceForPartitionMap.clear(); _disabledInstanceSet.clear(); for (InstanceConfig config : _instanceConfigMap.values()) { Map<String, List<String>> disabledPartitionMap = config.getDisabledPartitionsMap(); if (!config.getInstanceEnabled()) { _disabledInstanceSet.add(config.getInstanceName()); } for (String resource : disabledPartitionMap.keySet()) { if (!_disabledInstanceForPartitionMap.containsKey(resource)) { _disabledInstanceForPartitionMap.put(resource, new HashMap<String, Set<String>>()); } for (String partition : disabledPartitionMap.get(resource)) { if (!_disabledInstanceForPartitionMap.get(resource).containsKey(partition)) { _disabledInstanceForPartitionMap.get(resource).put(partition, new HashSet<String>()); } _disabledInstanceForPartitionMap.get(resource).get(partition) .add(config.getInstanceName()); } } } if (_clusterConfig.getDisabledInstances() != null) { _disabledInstanceSet.addAll(_clusterConfig.getDisabledInstances().keySet()); } }
private void updateDisabledInstances() { // Move the calculating disabled instances to refresh _disabledInstanceForPartitionMap.clear(); _disabledInstanceSet.clear(); for (InstanceConfig config : _instanceConfigMap.values()) { Map<String, List<String>> disabledPartitionMap = config.getDisabledPartitionsMap(); if (!config.getInstanceEnabled()) { _disabledInstanceSet.add(config.getInstanceName()); } for (String resource : disabledPartitionMap.keySet()) { if (!_disabledInstanceForPartitionMap.containsKey(resource)) { _disabledInstanceForPartitionMap.put(resource, new HashMap<String, Set<String>>()); } for (String partition : disabledPartitionMap.get(resource)) { if (!_disabledInstanceForPartitionMap.get(resource).containsKey(partition)) { _disabledInstanceForPartitionMap.get(resource).put(partition, new HashSet<String>()); } _disabledInstanceForPartitionMap.get(resource).get(partition) .add(config.getInstanceName()); } } } if (_clusterConfig.getDisabledInstances() != null) { _disabledInstanceSet.addAll(_clusterConfig.getDisabledInstances().keySet()); } }
liveInstanceSet.add(instanceName); if (!config.getInstanceEnabled() || (clusterConfig.getDisabledInstances() != null && clusterConfig.getDisabledInstances().containsKey(instanceName))) { disabledInstanceSet.add(instanceName);
liveInstanceSet.add(instanceName); if (!config.getInstanceEnabled() || (clusterConfig.getDisabledInstances() != null && clusterConfig.getDisabledInstances().containsKey(instanceName))) { disabledInstanceSet.add(instanceName);
String domain = insConfig.getDomain(); if (domain == null) { if (insConfig.getInstanceEnabled() && (_clusterConfig.getDisabledInstances() == null || !_clusterConfig.getDisabledInstances().containsKey(ins))) {
if (insConfig.getInstanceEnabled() && (_clusterConfig.getDisabledInstances() == null || !_clusterConfig.getDisabledInstances().containsKey(ins))) {
if (zone == null) { if (config.getInstanceEnabled() && (_clusterConfig.getDisabledInstances() == null || !_clusterConfig.getDisabledInstances().containsKey(ins))) {
if (zone == null) { if (config.getInstanceEnabled() && (_clusterConfig.getDisabledInstances() == null || !_clusterConfig.getDisabledInstances().containsKey(ins))) {
public void dropInstanceFromCluster(String clusterName, String instanceId) { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig instanceConfig = InstanceConfig.toInstanceConfig(instanceId); instanceId = instanceConfig.getInstanceName(); // ensure node is not live LiveInstance liveInstance = accessor.getProperty(keyBuilder.liveInstance(instanceId)); if (liveInstance != null) { throw new HelixException(String .format("Cannot drop instance %s as it is still live. Please stop it first", instanceId)); } InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceId)); if (config == null) { String error = "Node " + instanceId + " does not exist, cannot drop"; _logger.warn(error); throw new HelixException(error); } ClusterConfig clusterConfig = accessor.getProperty(keyBuilder.clusterConfig()); // ensure node is disabled, otherwise fail if (config.getInstanceEnabled() && (clusterConfig.getDisabledInstances() == null || !clusterConfig.getDisabledInstances().containsKey(instanceId))) { String error = "Node " + instanceId + " is enabled, cannot drop"; _logger.warn(error); throw new HelixException(error); } _admin.dropInstance(clusterName, config); }
public void dropInstanceFromCluster(String clusterName, String instanceId) { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig instanceConfig = InstanceConfig.toInstanceConfig(instanceId); instanceId = instanceConfig.getInstanceName(); // ensure node is not live LiveInstance liveInstance = accessor.getProperty(keyBuilder.liveInstance(instanceId)); if (liveInstance != null) { throw new HelixException(String .format("Cannot drop instance %s as it is still live. Please stop it first", instanceId)); } InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceId)); if (config == null) { String error = "Node " + instanceId + " does not exist, cannot drop"; _logger.warn(error); throw new HelixException(error); } ClusterConfig clusterConfig = accessor.getProperty(keyBuilder.clusterConfig()); // ensure node is disabled, otherwise fail if (config.getInstanceEnabled() && (clusterConfig.getDisabledInstances() == null || !clusterConfig.getDisabledInstances().containsKey(instanceId))) { String error = "Node " + instanceId + " is enabled, cannot drop"; _logger.warn(error); throw new HelixException(error); } _admin.dropInstance(clusterName, config); }
public void verifyEnabled(HelixZkClient zkClient, String clusterName, String instance, boolean wantEnabled) { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instance)); AssertJUnit.assertEquals(wantEnabled, config.getInstanceEnabled()); }
accessor.getProperty(accessor.keyBuilder().instanceConfig(instanceName)); if (instanceConfig != null) { if (!instanceConfig.getInstanceEnabled() || (clusterConfig.getDisabledInstances() != null && clusterConfig.getDisabledInstances().containsKey(instanceName))) { disabledNode.add(JsonNodeFactory.instance.textNode(instanceName));