@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ", instance: " + instanceName + ", participant config is null"); } InstanceConfig instanceConfig = new InstanceConfig(currentData); for (String partitionName : partitionNames) { instanceConfig.setInstanceEnabledForPartition(resourceName, partitionName, enabled); } return instanceConfig.getRecord(); } }, AccessOption.PERSISTENT);
@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ", instance: " + instanceName + ", participant config is null"); } InstanceConfig instanceConfig = new InstanceConfig(currentData); for (String partitionName : partitionNames) { instanceConfig.setInstanceEnabledForPartition(resourceName, partitionName, enabled); } return instanceConfig.getRecord(); } }, AccessOption.PERSISTENT);
@Test public void testLegacyEnableDisablePartition() { String instanceName = "TestInstanceLegacy"; String testResourcePrefix = "TestResourceLegacy"; ZNRecord record = new ZNRecord(instanceName); List<String> disabledPartitions = new ArrayList<String>(Arrays.asList(new String[] { "1", "2", "3" })); record.setListField(InstanceConfig.InstanceConfigProperty.HELIX_DISABLED_PARTITION.name(), disabledPartitions); InstanceConfig instanceConfig = new InstanceConfig(record); instanceConfig.setInstanceEnabledForPartition(testResourcePrefix, "2", false); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix).size(), 3); Assert.assertEquals(instanceConfig.getRecord() .getListField(InstanceConfig.InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()).size(), 3); instanceConfig.setInstanceEnabledForPartition(testResourcePrefix, "2", true); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix).size(), 2); Assert.assertEquals(instanceConfig.getRecord() .getListField(InstanceConfig.InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()).size(), 2); } }
@Test public void testEnableDisablePartitions() { String className = TestHelper.getTestClassName(); String methodName = TestHelper.getTestMethodName(); String clusterName = className + "_" + methodName; String instanceName = "TestInstance"; String testResourcePrefix = "TestResource"; System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis())); HelixAdmin admin = new ZKHelixAdmin(_gZkClient); admin.addCluster(clusterName, true); admin.addInstance(clusterName, new InstanceConfig(instanceName)); // Test disable instances with resources admin.enablePartition(false, clusterName, instanceName, testResourcePrefix + "0", Arrays.asList(new String[]{"1", "2"})); admin.enablePartition(false, clusterName, instanceName, testResourcePrefix + "1", Arrays.asList(new String[]{"2", "3", "4"})); InstanceConfig instanceConfig = admin.getInstanceConfig(clusterName, instanceName); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "0").size(), 2); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "1").size(), 3); // Test disable partition across resources // TODO : Remove this part once setInstanceEnabledForPartition(partition, enabled) is removed instanceConfig.setInstanceEnabledForPartition("10", false); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "0").size(), 3); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "1").size(), 4); admin.dropCluster(clusterName); }