tie_binding_to_dest_with_keep_while_cond fails with keep_while_conditions_not_met on headers exchange with inbound-only E2E after 4.2.x → 4.3.x upgrade #16823
-
Describe the bugUpgrading from 4.2.1 to 4.3.2 fails to enable the feature flag tie_binding_to_dest_with_keep_while_cond. I have a setup which has E2E with alternate exchange where the destination exchange does not have any outbound bindings but only has an alternate exchange. Enabling the flag looks for a binding for the destination exchange but fails to find one as alternate exchanges are not added as bindings. In my case i want to add the binding to the destination exchange dynamically when a particular job is triggered so exchanges without outbound bindings are expected. Reproduction steps
Try running the below script in a local kubernetes setup Error: Expected behaviorEnabling the flag should work in this case and handle the scenario. Additional contextNo response |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
|
There's prior art around this feature flag. Our best understanding of the conditions that can cause this feature flag's transition function to fail are covered in detail in #16587 and the known scenario was addressed in #16590. |
Beta Was this translation helpful? Give feedback.
-
|
@akshayagarwal-hub thanks for the script and the initial analysis. Compared to #16587, this is a similar scenario but the culprit metadata store object is an auto-delete exchange that has no outbound bindings. WorkaroundsClusters without such auto-delete exchanges would not run into this exception, so
Or
Non-auto-delete exchanges should not exhibit this behavior. Fixes#16824 addresses this exception and will ship in |
Beta Was this translation helpful? Give feedback.
@akshayagarwal-hub thanks for the script and the initial analysis.
Compared to #16587, this is a similar scenario but the culprit metadata store object is an auto-delete exchange that has no outbound bindings.
Workarounds
Clusters without such auto-delete exchanges would not run into this exception, so
one workaround is
Or