Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle database timeouts in MQTT queue deletion #12317

Merged
merged 3 commits into from
Sep 16, 2024

Commits on Sep 16, 2024

  1. rabbit_queue_type: Add {error,timeout} to delete/4 callback spec

    This return value was already possible since a classic queue will return
    it during termination if `rabbit_amqqueue:internal_delete/2` fails with
    that value.
    
    `rabbit_amqqueue:delete/4` already handles this value and converts it
    into a protocol error and channel exit. The other caller (MQTT
    processor) will be updated in a child commit.
    
    This commit also replaces eager conversions to protocol errors in
    rabbit_classic_queue, rabbit_quorum_queue and rabbit_stream_coordinator:
    we should return `{error, timeout}` consistently and not hide it in
    protocol errors.
    the-mikedavis committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    9627903 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a9c48ef View commit details
    Browse the repository at this point in the history
  3. rabbit_amqqueue: Catch exits when reading classic Q consumers/1

    `delegate:invoke/2` catches errors but not exits of the delegate
    process. Another process might query for a classic queue's consumers
    while the classic queue is being deleted or otherwise terminating and
    that would result in an exit of the calling process previously.
    the-mikedavis committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    a65ceb6 View commit details
    Browse the repository at this point in the history