idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
IdealState idealState = new IdealState(tableName); idealState.setReplicas(nReplicasStr); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState("myTable_0", "pinot3", "OFFLINE"); idealState.setReplicas("0"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState("myTable_OFFLINE", "pinot3", "OFFLINE"); idealState.setReplicas("1"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState("myTable_2", "pinot3", "OFFLINE"); idealState.setReplicas("2"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
/** * Regression test for large ideal state updates failing silently */ @Test public void testWriteLargeIdealState() { final int numSegments = 20000; IdealState idealState = new IdealState(RESOURCE_NAME); idealState.setStateModelDefRef("OnlineOffline"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED); idealState.setReplicas("0"); String helixClusterName = getHelixClusterName(); _helixAdmin.addResource(helixClusterName, RESOURCE_NAME, idealState); HelixHelper.updateIdealState(_helixManager, RESOURCE_NAME, new Function<IdealState, IdealState>() { @Override public IdealState apply(@Nullable IdealState idealState) { Assert.assertNotNull(idealState); for (int i = 0; i < numSegments; i++) { idealState.setPartitionState("segment_" + i, INSTANCE_NAME, "ONLINE"); } return idealState; } }, RetryPolicies.noDelayRetryPolicy(1)); IdealState resourceIdealState = _helixAdmin.getResourceIdealState(helixClusterName, RESOURCE_NAME); for (int i = 0; i < numSegments; i++) { Assert.assertEquals(resourceIdealState.getInstanceStateMap("segment_" + i).get(INSTANCE_NAME), "ONLINE"); } }
idealState.setPartitionState("myTable_2", "pinot3", "OFFLINE"); idealState.setReplicas("2"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState("myTable_1", "pinot2", "ONLINE"); idealState.setReplicas("2"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState("myTable_3", "pinot3", "ONLINE"); idealState.setReplicas("2"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setPartitionState(seg3.getSegmentName(), "pinot3", "OFFLINE"); idealState.setReplicas("3"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);
idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED); idealState.setPartitionState("mySegment", INSTANCE_NAME, "ONLINE"); callback.setIdealState(idealState); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED); idealState.setPartitionState("mySegment_1", INSTANCE_NAME, "ONLINE"); idealState.setPartitionState("mySegment_2", INSTANCE_NAME, "OFFLINE"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED); idealState.setPartitionState("mySegment_1", INSTANCE_NAME, "ONLINE"); idealState.setPartitionState("mySegment_2", INSTANCE_NAME, "OFFLINE"); idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED); idealState.setPartitionState("mySegment_1", INSTANCE_NAME, "ONLINE"); idealState.setPartitionState("mySegment_2", INSTANCE_NAME + "2", "ONLINE");
/** * Get the rebalancing mode on this resource * @return {@link RebalanceMode} */ public RebalanceMode getRebalanceMode() { RebalanceMode property = _record.getEnumField(IdealStateProperty.REBALANCE_MODE.toString(), RebalanceMode.class, RebalanceMode.NONE); if (property == RebalanceMode.NONE) { property = normalizeRebalanceMode(getIdealStateMode()); setRebalanceMode(property); } return property; }
/** * Get the rebalancing mode on this resource * @return {@link RebalanceMode} */ public RebalanceMode getRebalanceMode() { RebalanceMode property = _record.getEnumField(IdealStateProperty.REBALANCE_MODE.toString(), RebalanceMode.class, RebalanceMode.NONE); if (property == RebalanceMode.NONE) { property = normalizeRebalanceMode(getIdealStateMode()); setRebalanceMode(property); } return property; }
@Test public void testFullAutoModeCompatibility() { IdealState idealStateOld = new IdealState("old-test-db"); idealStateOld.setIdealStateMode(IdealStateModeProperty.AUTO_REBALANCE.toString()); Assert.assertEquals(idealStateOld.getRebalanceMode(), RebalanceMode.FULL_AUTO); Assert.assertEquals(idealStateOld.getIdealStateMode(), IdealStateModeProperty.AUTO_REBALANCE); IdealState idealStateNew = new IdealState("new-test-db"); idealStateNew.setRebalanceMode(RebalanceMode.FULL_AUTO); Assert.assertEquals(idealStateNew.getIdealStateMode(), IdealStateModeProperty.AUTO_REBALANCE); Assert.assertEquals(idealStateNew.getRebalanceMode(), RebalanceMode.FULL_AUTO); }
@Test public void testCustomizedModeCompatibility() { IdealState idealStateOld = new IdealState("old-test-db"); idealStateOld.setIdealStateMode(IdealStateModeProperty.CUSTOMIZED.toString()); Assert.assertEquals(idealStateOld.getRebalanceMode(), RebalanceMode.CUSTOMIZED); Assert.assertEquals(idealStateOld.getIdealStateMode(), IdealStateModeProperty.CUSTOMIZED); IdealState idealStateNew = new IdealState("new-test-db"); idealStateNew.setRebalanceMode(RebalanceMode.CUSTOMIZED); Assert.assertEquals(idealStateNew.getIdealStateMode(), IdealStateModeProperty.CUSTOMIZED); Assert.assertEquals(idealStateNew.getRebalanceMode(), RebalanceMode.CUSTOMIZED); } }
@Test public void testSemiAutoModeCompatibility() { IdealState idealStateOld = new IdealState("old-test-db"); idealStateOld.setIdealStateMode(IdealStateModeProperty.AUTO.toString()); Assert.assertEquals(idealStateOld.getRebalanceMode(), RebalanceMode.SEMI_AUTO); Assert.assertEquals(idealStateOld.getIdealStateMode(), IdealStateModeProperty.AUTO); IdealState idealStateNew = new IdealState("new-test-db"); idealStateNew.setRebalanceMode(RebalanceMode.SEMI_AUTO); Assert.assertEquals(idealStateNew.getIdealStateMode(), IdealStateModeProperty.AUTO); Assert.assertEquals(idealStateNew.getRebalanceMode(), RebalanceMode.SEMI_AUTO); }
private IdealState generateNewIdealState(String resourceName, IdealState currentIdealState, ZNRecord newMapping) { IdealState newIdealState = new IdealState(resourceName); newIdealState.getRecord().setSimpleFields(currentIdealState.getRecord().getSimpleFields()); newIdealState.setRebalanceMode(currentIdealState.getRebalanceMode()); newIdealState.getRecord().setListFields(newMapping.getListFields()); return newIdealState; }
private IdealState generateNewIdealState(String resourceName, IdealState currentIdealState, ZNRecord newMapping) { IdealState newIdealState = new IdealState(resourceName); newIdealState.getRecord().setSimpleFields(currentIdealState.getRecord().getSimpleFields()); newIdealState.setRebalanceMode(currentIdealState.getRebalanceMode()); newIdealState.getRecord().setListFields(newMapping.getListFields()); return newIdealState; }
private void createIS(HelixDataAccessor accessor, String resourceId, String stateModelDefRef, RebalanceMode rebalanceMode) { IdealState idealState = new IdealState(resourceId); idealState.setRebalanceMode(rebalanceMode); idealState.setStateModelDefRef(stateModelDefRef); idealState.setNumPartitions(1); idealState.setReplicas("1"); idealState.getRecord().setListField(resourceId + "_0", ImmutableList.of(PARTICIPANT)); idealState.getRecord().setMapField(resourceId + "_0", ImmutableMap.of(PARTICIPANT, STATE)); accessor.setProperty(accessor.keyBuilder().idealStates(resourceId), idealState); }
private void setupUnbalancedDB() throws InterruptedException { // Start with Full-Auto mode to create the partitions, Semi-Auto won't create partitions. _gSetupTool.addResourceToCluster(CLUSTER_NAME, UNBALANCED_DB_NAME, 50, MASTER_SLAVE_STATE_MODEL, IdealState.RebalanceMode.FULL_AUTO.toString()); _gSetupTool.rebalanceStorageCluster(CLUSTER_NAME, UNBALANCED_DB_NAME, 1); // Set preference list to put all partitions to one instance. IdealState idealState = _gSetupTool.getClusterManagementTool().getResourceIdealState(CLUSTER_NAME, UNBALANCED_DB_NAME); Set<String> partitions = idealState.getPartitionSet(); for (String partition : partitions) { idealState.setPreferenceList(partition, Lists.newArrayList(_blockedParticipant.getInstanceName())); } idealState.setRebalanceMode(IdealState.RebalanceMode.SEMI_AUTO); _gSetupTool.getClusterManagementTool().setResourceIdealState(CLUSTER_NAME, UNBALANCED_DB_NAME, idealState); Assert.assertTrue(_clusterVerifier.verifyByPolling(10000, 100)); } }