private void checkTableConfigWithAssignmentConfig(TableConfig tableConfig, TableConfig tableConfigToCompare) { // Check that the segment assignment configuration does exist. Assert.assertEquals(tableConfigToCompare.getTableName(), tableConfig.getTableName()); Assert.assertNotNull(tableConfigToCompare.getValidationConfig().getReplicaGroupStrategyConfig()); Assert.assertEquals(tableConfigToCompare.getValidationConfig().getReplicaGroupStrategyConfig(), tableConfig.getValidationConfig().getReplicaGroupStrategyConfig()); // Check that the configurations are correct. ReplicaGroupStrategyConfig strategyConfig = tableConfigToCompare.getValidationConfig().getReplicaGroupStrategyConfig(); Assert.assertTrue(strategyConfig.getMirrorAssignmentAcrossReplicaGroups()); Assert.assertEquals(strategyConfig.getNumInstancesPerPartition(), 5); Assert.assertEquals(strategyConfig.getPartitionColumn(), "memberId"); }
ReplicaGroupStrategyConfig replicaGroupStrategyConfig = tableConfig.getValidationConfig().getReplicaGroupStrategyConfig(); boolean mirrorAssignmentAcrossReplicaGroups = replicaGroupStrategyConfig.getMirrorAssignmentAcrossReplicaGroups(); String partitionColumn = replicaGroupStrategyConfig.getPartitionColumn(); if (partitionColumn != null) {
Preconditions.checkNotNull(replicaGroupStrategyConfig, "Replica group strategy config should not be null"); String partitionColumn = replicaGroupStrategyConfig.getPartitionColumn(); int numInstancesPerPartition = replicaGroupStrategyConfig.getNumInstancesPerPartition();
private TableConfig buildOfflineTableConfig() throws Exception { // Create the replica group aware assignment strategy config ReplicaGroupStrategyConfig replicaGroupStrategyConfig = new ReplicaGroupStrategyConfig(); replicaGroupStrategyConfig.setNumInstancesPerPartition(NUM_PARTITION); replicaGroupStrategyConfig.setMirrorAssignmentAcrossReplicaGroups(true); // Create the routing config RoutingConfig routingConfig = new RoutingConfig(); routingConfig.setRoutingTableBuilderName("PartitionAwareOffline"); // Create table config TableConfig tableConfig = new TableConfig.Builder(CommonConstants.Helix.TableType.OFFLINE).setTableName(OFFLINE_TABLE_NAME) .setNumReplicas(NUM_REPLICA).setSegmentAssignmentStrategy("ReplicaGroupSegmentAssignmentStrategy").build(); tableConfig.getValidationConfig().setReplicaGroupStrategyConfig(replicaGroupStrategyConfig); tableConfig.setRoutingConfig(routingConfig); return tableConfig; }
ReplicaGroupStrategyConfig replicaGroupStrategyConfig = new ReplicaGroupStrategyConfig(); replicaGroupStrategyConfig.setNumInstancesPerPartition(numInstancesPerPartition); replicaGroupStrategyConfig.setMirrorAssignmentAcrossReplicaGroups(false); replicaGroupStrategyConfig.setPartitionColumn(PARTITION_COLUMN);
if (replicaGroupConfig.getMirrorAssignmentAcrossReplicaGroups()) { for (int partitionId = 0; partitionId < numPartitions; partitionId++) { for (int serverIndex = 0; serverIndex < replicaGroupConfig.getNumInstancesPerPartition(); serverIndex++) { Set<String> mirrorSegments = new HashSet<>(); for (int replicaId = 0; replicaId < numReplicaGroups; replicaId++) {
@Override public void init(Configuration configuration, TableConfig tableConfig, ZkHelixPropertyStore<ZNRecord> propertyStore, BrokerMetrics brokerMetrics) { super.init(configuration, tableConfig, propertyStore, brokerMetrics); String partitionColumn = tableConfig.getValidationConfig().getReplicaGroupStrategyConfig().getPartitionColumn(); _isPartitionLevelReplicaGroupAssignment = (partitionColumn != null); _numReplicas = tableConfig.getValidationConfig().getReplicationNumber(); }
boolean mirrorAssignment = replicaGroupConfig.getMirrorAssignmentAcrossReplicaGroups(); int numPartitions = replicaGroupPartitionAssignment.getNumPartitions(); int numReplicaGroups = replicaGroupPartitionAssignment.getNumReplicaGroups();
private void updateTableConfig(int targetNumInstancePerPartition, int targetNumReplicaGroup) throws IOException { String tableNameWithType = TableNameBuilder.OFFLINE.tableNameWithType(TABLE_NAME); TableConfig tableConfig = _helixResourceManager.getTableConfig(TABLE_NAME, CommonConstants.Helix.TableType.OFFLINE); tableConfig.getValidationConfig().getReplicaGroupStrategyConfig() .setNumInstancesPerPartition(targetNumInstancePerPartition); tableConfig.getValidationConfig().setReplication(Integer.toString(targetNumReplicaGroup)); _helixResourceManager .setExistingTableConfig(tableConfig, tableNameWithType, CommonConstants.Helix.TableType.OFFLINE); } }
ReplicaGroupStrategyConfig replicaGroupStrategyConfig = new ReplicaGroupStrategyConfig(); replicaGroupStrategyConfig.setNumInstancesPerPartition(numInstancesPerPartition); replicaGroupStrategyConfig.setMirrorAssignmentAcrossReplicaGroups(true);
ReplicaGroupStrategyConfig replicaGroupConfig = new ReplicaGroupStrategyConfig(); replicaGroupConfig.setNumInstancesPerPartition(5); replicaGroupConfig.setMirrorAssignmentAcrossReplicaGroups(true); replicaGroupConfig.setPartitionColumn("memberId");
if (replicaGroupConfig.getPartitionColumn() != null) { throw new InvalidConfigException("Partition level replica group rebalance is not supported"); int targetNumInstancesPerPartition = replicaGroupConfig.getNumInstancesPerPartition(); int targetNumReplicaGroup = tableConfig.getValidationConfig().getReplicationNumber();
ReplicaGroupStrategyConfig replicaGroupStrategyConfig = new ReplicaGroupStrategyConfig(); replicaGroupStrategyConfig.setNumInstancesPerPartition(numInstancesPerPartition); replicaGroupStrategyConfig.setMirrorAssignmentAcrossReplicaGroups(true);
ReplicaGroupStrategyConfig replicaGroupStrategyConfig = new ReplicaGroupStrategyConfig(); replicaGroupStrategyConfig.setNumInstancesPerPartition(numInstancesPerPartition); replicaGroupStrategyConfig.setMirrorAssignmentAcrossReplicaGroups(true);