diff --git a/src/backend/distributed/operations/shard_rebalancer.c b/src/backend/distributed/operations/shard_rebalancer.c index 61a4ee9b0..d26c7baf2 100644 --- a/src/backend/distributed/operations/shard_rebalancer.c +++ b/src/backend/distributed/operations/shard_rebalancer.c @@ -2796,7 +2796,15 @@ FindAllowedTargetFillState(RebalanceState *state, uint64 shardId) targetFillState->node, state->functions->context)) { - return targetFillState; + bool targetHasShard = PlacementsHashFind(state->placementsHash, + shardId, + targetFillState->node); + + /* skip if the shard is already placed on the target node */ + if (!targetHasShard) + { + return targetFillState; + } } } return NULL;