[dbsp] Fix: join hints were not validated correctly.#6571
Conversation
mythical-fred
left a comment
There was a problem hiding this comment.
Nice catch and a clean fix. The comment block above the old_hints binding is exactly the kind of "why, not what" explanation that would have prevented this in the first place — solve_cluster reads from self.integrals, so validation has to happen after the write, with rollback on failure.
The regression test is well-scoped: Broadcast on the outer input of a left join is a real user-visible bug path (SQL /*+ broadcast(pt) */ hint), and asserting the circuit still steps cleanly after rejection confirms the rollback actually restored state rather than leaving self.integrals in a half-updated shape.
One small observation, non-blocking: Size and Skew hints are still applied without validation, matching the previous behavior. If those can also produce infeasible cluster states down the line, they'd want the same treatment — but that's a separate question and not something this PR needs to answer.
e6b2183 to
bca1dc2
Compare
Hints were supposed to get validated before getting installed as balancer constraints. A silly error caused the validation to run on the balancer config without the hint. As a result the pipeline could crash later where it assumes that the current set of constraints is satisfiable. Signed-off-by: Leonid Ryzhyk <ryzhyk@gmail.com>
bca1dc2 to
6ed5873
Compare
Hints were supposed to get validated before getting installed as balancer constraints. A silly error caused the validation to run on the balancer config without the hint. As a result the pipeline could crash later where it assumes that the current set of constraints is satisfiable.
Describe Manual Test Plan
Checklist
Breaking Changes?
Mark if you think the answer is yes for any of these components:
Describe Incompatible Changes