Comment 93 for bug 856764

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to oslo.messaging (stable/kilo)

Reviewed: https://review.openstack.org/167308
Committed: https://git.openstack.org/cgit/openstack/oslo.messaging/commit/?id=64bdd80c5fe4d53ac8d7ab3ed906ec9feaeb7ec4
Submitter: Jenkins
Branch: stable/kilo

commit 64bdd80c5fe4d53ac8d7ab3ed906ec9feaeb7ec4
Author: Mehdi Abaakouk <email address hidden>
Date: Wed Jan 21 09:13:10 2015 +0100

    rabbit: heartbeat implementation

    AMQP offers a heartbeat feature to ensure that the application layer
    promptly finds out about disrupted connections (and also completely
    unresponsive peers). If the client requests heartbeats on connection, rabbit
    server will regularly send messages to each connections with the expectation of
    a response.

    To acheive this, each driver connection object spawn a thread that
    send/retrieve heartbeat packets exchanged between the server and the
    client.

    To protect the concurrency access to the kombu connection between the
    driver and this thread use a lock that always prioritize the
    heartbeat thread. So when the heartbeat thread wakes up it will acquire the
    lock quickly, to ensure we have no heartbeat starvation when the driver
    sends a lot of messages.

    Also when we are polling the broker, the lock can be held for a long
    time by the 'consume' method, so this one does the heartbeat stuffs itself.

    DocImpact: 2 new configuration options for Rabbit driver

    Co-Authored-By: Oleksii Zamiatin <email address hidden>
    Co-Authored-By: Ilya Pekelny <email address hidden>

    Related-Bug: #1371723
    Closes-Bug: #856764

    Change-Id: I1d3a635f3853bc13ffc14034468f1ac6262c11a3
    (cherry picked from commit b9e134d7e955b9180482d2f7c8844501c750adf6)