Jackie-Jiang commented on code in PR #8989:
URL: https://github.com/apache/pinot/pull/8989#discussion_r939461094
##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java:
##########
@@ -1693,10 +1693,21 @@ private void assignInstances(TableConfig tableConfig,
boolean override) {
InstanceAssignmentDriver instanceAssignmentDriver = new
InstanceAssignmentDriver(tableConfig);
List<InstanceConfig> instanceConfigs = getAllHelixInstanceConfigs();
for (InstancePartitionsType instancePartitionsType :
instancePartitionsTypesToAssign) {
- InstancePartitions instancePartitions =
- instanceAssignmentDriver.assignInstances(instancePartitionsType,
instanceConfigs, null);
- LOGGER.info("Persisting instance partitions: {}", instancePartitions);
- InstancePartitionsUtils.persistInstancePartitions(_propertyStore,
instancePartitions);
+ boolean hasPreConfiguredInstancePartitions =
TableConfigUtils.hasPreConfiguredInstancePartitions(tableConfig,
+ instancePartitionsType);
+ InstancePartitions instancePartitions;
+ if (!hasPreConfiguredInstancePartitions) {
+ instancePartitions =
instanceAssignmentDriver.assignInstances(instancePartitionsType,
instanceConfigs, null);
+ LOGGER.info("Persisting instance partitions: {}",
instancePartitions);
+ InstancePartitionsUtils.persistInstancePartitions(_propertyStore,
instancePartitions);
+ } else {
+ instancePartitions =
InstancePartitionsUtils.fetchInstancePartitionsWithRename(_propertyStore,
+
tableConfig.getInstancePartitionsMap().get(instancePartitionsType),
+ instancePartitionsType.getInstancePartitionsName(rawTableName));
+ LOGGER.info("Persisting instance partitions: {} (referencing {})",
instancePartitions,
+
tableConfig.getInstancePartitionsMap().get(instancePartitionsType));
Review Comment:
(nit) Reuse
`tableConfig.getInstancePartitionsMap().get(instancePartitionsType)`
```suggestion
String referenceInstancePartitionsName =
tableConfig.getInstancePartitionsMap().get(instancePartitionsType);
instancePartitions =
InstancePartitionsUtils.fetchInstancePartitionsWithRename(_propertyStore,
referenceInstancePartitionsName,
instancePartitionsType.getInstancePartitionsName(rawTableName));
LOGGER.info("Persisting instance partitions: {} (referencing {})",
instancePartitions, referenceInstancePartitionsName);
```
##########
pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/TableConfigBuilder.java:
##########
@@ -374,6 +375,11 @@ public TableConfigBuilder
setTunerConfigList(List<TunerConfig> tunerConfigList)
return this;
}
+ public TableConfigBuilder
setInstancePartitionsMap(Map<InstancePartitionsType, String>
instancePartitionsMap) {
Review Comment:
(nit) Move this next to `setInstanceAssignmentConfigMap()` for readability
##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -418,6 +420,21 @@ private InstancePartitions
getInstancePartitions(TableConfig tableConfig,
String tableNameWithType = tableConfig.getTableName();
if (InstanceAssignmentConfigUtils.allowInstanceAssignment(tableConfig,
instancePartitionsType)) {
if (reassignInstances) {
+ String rawTableName =
TableNameBuilder.extractRawTableName(tableNameWithType);
+ boolean hasPreConfiguredInstancePartitions =
TableConfigUtils.hasPreConfiguredInstancePartitions(tableConfig,
+ instancePartitionsType);
+ if (hasPreConfiguredInstancePartitions) {
+ InstancePartitions instancePartitions =
InstancePartitionsUtils.fetchInstancePartitionsWithRename(
+ _helixManager.getHelixPropertyStore(),
tableConfig.getInstancePartitionsMap().get(instancePartitionsType),
Review Comment:
(nit) Same here, store
`tableConfig.getInstancePartitionsMap().get(instancePartitionsType)` in a local
var
##########
pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TableConfig.java:
##########
@@ -101,6 +102,9 @@ public class TableConfig extends BaseJsonConfig {
@JsonPropertyDescription(value = "Configs for Table config tuner")
private List<TunerConfig> _tunerConfigList;
+ @JsonPropertyDescription(value = "Point to an existing instance partitions")
+ private Map<InstancePartitionsType, String> _instancePartitionsMap;
Review Comment:
(nit) Move this next to `_instanceAssignmentConfigMap`, same for other
changes in this file
--
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]