KKcorps opened a new pull request, #19699: URL: https://github.com/apache/pinot/pull/19699
A realtime table sends each consuming segment only to the first instance of its instance partition. So when a CONSUMING `replicaGroupPartitionConfig` has `numPartitions > 1`, any `numInstancesPerPartition` other than 1 is quietly wrong. With 2, half the servers in each replica group never consume. Left unset (0), every partition gets the whole replica group, and on a fresh assignment all partitions consume on one server. We hit this on a production table and only caught it in a manual config review. This adds a check in `TableConfigUtils.validateInstanceAssignmentConfigs` that rejects that shape on create and update, for the default and FD-aware selectors. `IMPLICIT_REALTIME_TABLE_PARTITION_SELECTOR` already enforced the same rule. COMPLETED, OFFLINE and tier configs are not touched, because those spread segments across every instance in the partition. Compatibility: an existing table with this config will fail its next config update until the value is set to 1. That table is already mis-assigned, so failing loudly is the point. Tested with a new `TableConfigUtilsTest` case (0 and 2 on both selectors, plus the shapes that must still pass). All 80 `TableConfigUtilsTest` tests pass, and spotless, checkstyle and license checks pass on `pinot-segment-local`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_013tXyW5HzGqtJqwXCKvZtRR -- 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]
