Handle and propagate protocol exceptions in channel interceptors to the calling parent channels #9459
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed Changes
Channel interceptor behaviour
rabbit_channel_interceptor
allows us to return#amqp_error{}
however there times when we also want to (fail fast) and throw, or exit an
amqp_error
directlyfrom the channel interceptor callback. For instance, when using equivalence helpers in custom
interceptor callbacks:
rabbit_misc:assert_field_equivalence/4
(seedummy_interceptor
).The
rabbit_channel_interceptor
does a catch on callback exceptions (at least forundef
) andhandles AMQP method and content as normal. At this point, we also want to be able to catch protocol
exceptions and pass on the exit to the calling/parent channel process. Gives us some extensibility
on custom interceptor callbacks in handling and processing some common protocol exceptions.
(Really need this for something we're working on 😬)
Types of Changes
What types of changes does your code introduce to this project?
Put an
x
in the boxes that applyChecklist
Put an
x
in the boxes that apply.You can also fill these out after creating the PR.
If you're unsure about any of them, don't hesitate to ask on the mailing list.
We're here to help!
This is simply a reminder of what we are going to look for before merging your code.
CONTRIBUTING.md
documentFurther Comments
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc.