/** * Get a map that mapping resource name to disabled partitions * @return A map of resource name mapping to disabled partitions. If no * resource/partitions disabled, return an empty map. */ public Map<String, List<String>> getDisabledPartitionsMap() { Map<String, String> disabledPartitionsRawMap = _record.getMapField(InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()); if (disabledPartitionsRawMap == null) { return Collections.emptyMap(); } Map<String, List<String>> disabledPartitionsMap = new HashMap<String, List<String>>(); for (String resourceName : disabledPartitionsRawMap.keySet()) { disabledPartitionsMap.put(resourceName, getDisabledPartitions(resourceName)); } return disabledPartitionsMap; }
oldDisabledPartitions.put(instanceName, config.getDisabledPartitions()); disabledPartitions.put(instanceName, config.getDisabledPartitionsMap());
/** * Get a map that mapping resource name to disabled partitions * @return A map of resource name mapping to disabled partitions. If no * resource/partitions disabled, return an empty map. */ public Map<String, List<String>> getDisabledPartitionsMap() { Map<String, String> disabledPartitionsRawMap = _record.getMapField(InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()); if (disabledPartitionsRawMap == null) { return Collections.emptyMap(); } Map<String, List<String>> disabledPartitionsMap = new HashMap<String, List<String>>(); for (String resourceName : disabledPartitionsRawMap.keySet()) { disabledPartitionsMap.put(resourceName, getDisabledPartitions(resourceName)); } return disabledPartitionsMap; }
oldDisabledPartitions.put(instanceName, config.getDisabledPartitions()); disabledPartitions.put(instanceName, config.getDisabledPartitionsMap());
@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); }
@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); } }
PropertyKey.Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig("localhost_12918")); List<String> disabledPartitions = config.getDisabledPartitions();