private List<InstanceConfig> createInstanceConfigs(int instanceCount) { List<InstanceConfig> instanceConfigs = new ArrayList<>(); for (int i = 0; i < instanceCount; i++) { InstanceConfig instanceConfig = new InstanceConfig(buildInstanceName(i)); instanceConfig.setInstanceEnabled(true); instanceConfigs.add(instanceConfig); } return instanceConfigs; } }
public InstanceConfig toInstanceConfig() { final InstanceConfig iConfig = new InstanceConfig(toInstanceId()); iConfig.setHostName(_host); iConfig.setPort(_port); iConfig.setInstanceEnabled(true); iConfig.addTag(getTagOrDefaultTag()); return iConfig; }
@Test public void testRoutingTableExcludesDisabledAndRebootingInstances() { final String tableName = "fakeTable_OFFLINE"; final int segmentCount = 100; final int replicationFactor = 6; final int instanceCount = 50; ExternalView externalView = createExternalView(tableName, segmentCount, replicationFactor, instanceCount); List<InstanceConfig> instanceConfigs = createInstanceConfigs(instanceCount); final InstanceConfig disabledHelixInstance = instanceConfigs.get(0); final String disabledHelixInstanceName = disabledHelixInstance.getInstanceName(); disabledHelixInstance.setInstanceEnabled(false); final InstanceConfig shuttingDownInstance = instanceConfigs.get(1); final String shuttingDownInstanceName = shuttingDownInstance.getInstanceName(); shuttingDownInstance.getRecord() .setSimpleField(CommonConstants.Helix.IS_SHUTDOWN_IN_PROGRESS, Boolean.toString(true)); validateAssertionForOneRoutingTable(new RoutingTableValidator() { @Override public boolean isRoutingTableValid(Map<String, List<String>> routingTable, ExternalView externalView, List<InstanceConfig> instanceConfigs) { for (String serverName : routingTable.keySet()) { // These servers should not appear in the routing table if (serverName.equals(disabledHelixInstanceName) || serverName.equals(shuttingDownInstanceName)) { return false; } } return true; } }, "Routing table should not contain disabled instances", externalView, instanceConfigs, tableName); }
instanceConfig.setInstanceEnabled(true); instanceConfig.setHostName("Broker_localhost"); instanceConfig.setPort("2");
@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ", instance: " + instanceName + ", participant config is null"); } InstanceConfig config = new InstanceConfig(currentData); config.setInstanceEnabled(enabled); return config.getRecord(); } }, AccessOption.PERSISTENT);
@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ", instance: " + instanceName + ", participant config is null"); } InstanceConfig config = new InstanceConfig(currentData); config.setInstanceEnabled(enabled); return config.getRecord(); } }, AccessOption.PERSISTENT);
config.setInstanceEnabled(true); if (config.getHostName() == null) { config.setHostName(instanceId);
config.setInstanceEnabled(true); if (config.getHostName() == null) { config.setHostName(instanceId);
for (InstanceConfig instanceConfig : instanceConfigs) { instanceConfig.setInstanceEnabled(true); _instanceConfigMap.put(instanceConfig.getInstanceName(), instanceConfig);
for (InstanceConfig instanceConfig : instanceConfigs) { instanceConfig.setInstanceEnabled(true); _instanceConfigMap.put(instanceConfig.getInstanceName(), instanceConfig);
private void setInstanceEnable(String instanceName, boolean enabled, ConfigAccessor configAccessor) { InstanceConfig instanceConfig = configAccessor.getInstanceConfig(CLUSTER_NAME, instanceName); instanceConfig.setInstanceEnabled(enabled); configAccessor.setInstanceConfig(CLUSTER_NAME, instanceName, instanceConfig); }
instanceConfig.setInstanceEnabled(true); _helixAdmin.addInstance(_clusterName, instanceConfig);
instanceConfig.setInstanceEnabled(true); _helixAdmin.addInstance(_clusterName, instanceConfig);
private static void addNode() throws Exception { NUM_NODES = NUM_NODES + 1; int port = 12000 + NUM_NODES - 1; InstanceConfig instanceConfig = new InstanceConfig("localhost_" + port); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + port); instanceConfig.setInstanceEnabled(true); echo("ADDING NEW NODE :" + instanceConfig.getInstanceName() + ". Partitions will move from old nodes to the new node."); admin.addInstance(CLUSTER_NAME, instanceConfig); INSTANCE_CONFIG_LIST.add(instanceConfig); MyProcess process = new MyProcess(instanceConfig.getInstanceName()); PROCESS_LIST.add(process); admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, 3); process.start(); }
private static void addNode() throws Exception { NUM_NODES = NUM_NODES + 1; int port = 12000 + NUM_NODES - 1; InstanceConfig instanceConfig = new InstanceConfig("localhost_" + port); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + port); instanceConfig.setInstanceEnabled(true); echo("ADDING NEW NODE :" + instanceConfig.getInstanceName() + ". Partitions will move from old nodes to the new node."); admin.addInstance(CLUSTER_NAME, instanceConfig); INSTANCE_CONFIG_LIST.add(instanceConfig); MyProcess process = new MyProcess(instanceConfig.getInstanceName()); PROCESS_LIST.add(process); admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, 3); process.start(); }
InstanceConfig config = new InstanceConfig("consumer_" + consumerId); config.setHostName("localhost"); config.setInstanceEnabled(true); admin.addInstance(clusterName, config);
protected void setupInstances(String clusterName, int[] instances) { HelixAdmin admin = new ZKHelixAdmin(_gZkClient); for (int i = 0; i < instances.length; i++) { String instance = "localhost_" + instances[i]; InstanceConfig instanceConfig = new InstanceConfig(instance); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + instances[i]); instanceConfig.setInstanceEnabled(true); admin.addInstance(clusterName, instanceConfig); } }
@Test (dependsOnMethods = {"testClusterExpansion"}) public void testClusterExpansionByEnableInstance() throws Exception { Assert.assertTrue(_clusterVerifier.verifyByPolling()); _migrationVerifier.reset(); _migrationVerifier.start(); int numNodes = _participants.size(); // add new instances with all disabled for (int i = numNodes; i < numNodes + NUM_NODE; i++) { String storageNodeName = PARTICIPANT_PREFIX + "_" + (START_PORT + i); InstanceConfig config = InstanceConfig.toInstanceConfig(storageNodeName); config.setInstanceEnabled(false); config.getRecord().getSimpleFields() .remove(InstanceConfig.InstanceConfigProperty.HELIX_ENABLED_TIMESTAMP.name()); _gSetupTool.getClusterManagementTool().addInstance(CLUSTER_NAME, config); // start dummy participants MockParticipantManager participant = new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, storageNodeName); participant.syncStart(); _participants.add(participant); } // enable new instance one by one for (int i = numNodes; i < numNodes + NUM_NODE; i++) { String storageNodeName = PARTICIPANT_PREFIX + "_" + (START_PORT + i); _gSetupTool.getClusterManagementTool().enableInstance(CLUSTER_NAME, storageNodeName, true); Thread.sleep(100); } Assert.assertTrue(_clusterVerifier.verifyByPolling()); Assert.assertFalse(_migrationVerifier.hasLessReplica()); _migrationVerifier.stop(); }
private static void addInstanceConfig(String instanceName) { // add node to cluster if not already added ZKHelixAdmin admin = new ZKHelixAdmin(ZK_ADDR); InstanceConfig instanceConfig = null; try { instanceConfig = admin.getInstanceConfig(clusterName, instanceName); } catch (Exception e) { } if (instanceConfig == null) { InstanceConfig config = new InstanceConfig(instanceName); config.setHostName("localhost"); config.setInstanceEnabled(true); echo("Adding InstanceConfig:" + config); admin.addInstance(clusterName, config); } }
@Override public void enableInstance(String clusterName, String instanceName, boolean enabled) { String instanceConfigsPath = PropertyPathBuilder.instanceConfig(clusterName); if (!_baseDataAccessor.exists(instanceConfigsPath, 0)) { _baseDataAccessor.create(instanceConfigsPath, new ZNRecord(instanceName), 0); } String instanceConfigPath = instanceConfigsPath + "/" + instanceName; ZNRecord record = (ZNRecord) _baseDataAccessor.get(instanceConfigPath, null, 0); InstanceConfig instanceConfig = new InstanceConfig(record); instanceConfig.setInstanceEnabled(enabled); _baseDataAccessor.set(instanceConfigPath, instanceConfig.getRecord(), 0); }