jackjlli commented on issue #10607:
URL: https://github.com/apache/pinot/issues/10607#issuecomment-1509404993

   Discussed with @priyen offline. We modified the existing unit test in order 
to print out the output of the instance partition mapping, and we don't see the 
scenarios where only partial of the pool are assigned. We suspected that some 
configs might have been messed up during that time. Based on the output of the 
edited unit test, we don't see the current algorithm behaves abnormally.  
   The below is the edited unit test:
   ```
   @Test
     public void testPoolBased() {
       // 10 instances in 2 pools, each with 5 instances. Pool 0: 0-4, Pool 1: 
5-9
       int numInstances = 10;
       int numPools = 2;
       int numInstancesPerPool = numInstances / numPools;
       int numReplicaGroups = 2;
       List<InstanceConfig> instanceConfigs = new ArrayList<>(numInstances);
       for (int i = 0; i < numInstances; i++) {
         InstanceConfig instanceConfig = new 
InstanceConfig(SERVER_INSTANCE_ID_PREFIX + i);
         instanceConfig.addTag(OFFLINE_TAG);
         int pool = i / numInstancesPerPool;
         instanceConfig.getRecord()
             .setMapField(InstanceUtils.POOL_KEY, 
Collections.singletonMap(OFFLINE_TAG, Integer.toString(pool)));
         instanceConfigs.add(instanceConfig);
       }
   
       InstanceReplicaGroupPartitionConfig replicaPartitionConfig = new 
InstanceReplicaGroupPartitionConfig(true, 10, numReplicaGroups, 5, 24, 5, true);
       InstanceTagPoolConfig tagPoolConfig = new 
InstanceTagPoolConfig(OFFLINE_TAG, true, numPools, null);
       TableConfig tableConfig = new 
TableConfigBuilder(TableType.OFFLINE).setTableName(RAW_TABLE_NAME)
           
.setInstanceAssignmentConfigMap(Collections.singletonMap(InstancePartitionsType.OFFLINE.toString(),
               new InstanceAssignmentConfig(tagPoolConfig, null, 
replicaPartitionConfig))).build();
       
tableConfig.setInstanceAssignmentConfigMap(Collections.singletonMap(InstancePartitionsType.OFFLINE.toString(),
           new InstanceAssignmentConfig(tagPoolConfig, null, 
replicaPartitionConfig)));
       InstanceAssignmentDriver driver = new 
InstanceAssignmentDriver(tableConfig);
   
       InstancePartitions existingInstancePartitions = null;
       InstancePartitions instancePartitions =
           driver.assignInstances(InstancePartitionsType.OFFLINE, 
instanceConfigs, existingInstancePartitions);
       assertEquals(instancePartitions.getNumReplicaGroups(), numReplicaGroups);
       assertEquals(instancePartitions.getNumPartitions(), 24);
       System.out.println(instancePartitions);
   
       // Now 30 instances in 2 pools, each with 15 instances.  Pool 0: 10-19, 
Pool 1: 20-29
       numInstances = 30;
       int moreNumInstancesPerPool = 10;
       for (int i = 10; i < numInstances; i++) {
         InstanceConfig instanceConfig = new 
InstanceConfig(SERVER_INSTANCE_ID_PREFIX + i);
         instanceConfig.addTag(OFFLINE_TAG);
         int pool = (i - 10) / moreNumInstancesPerPool;
         instanceConfig.getRecord()
             .setMapField(InstanceUtils.POOL_KEY, 
Collections.singletonMap(OFFLINE_TAG, Integer.toString(pool)));
         instanceConfigs.add(instanceConfig);
       }
   
       replicaPartitionConfig = new InstanceReplicaGroupPartitionConfig(true, 
30, numReplicaGroups, 15, 24, 5, true);
       
tableConfig.setInstanceAssignmentConfigMap(Collections.singletonMap(InstancePartitionsType.OFFLINE.toString(),
           new InstanceAssignmentConfig(tagPoolConfig, null, 
replicaPartitionConfig)));
       driver = new InstanceAssignmentDriver(tableConfig);
       instancePartitions =
           driver.assignInstances(InstancePartitionsType.OFFLINE, 
instanceConfigs, existingInstancePartitions);
       assertEquals(instancePartitions.getNumReplicaGroups(), numReplicaGroups);
       assertEquals(instancePartitions.getNumPartitions(), 24);
       System.out.println(instancePartitions);
     }
   ```
   Since there is no issue found out from the tests, I don't think it's worthy 
of keeping this issue open. I'll close this issue for now.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to