Bug 1463111 - broker sends connection heartbeats even on busy connections
broker sends connection heartbeats even on busy connections
Status: NEW
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
x86_64 Linux
unspecified Severity medium
: ---
: ---
Assigned To: messaging-bugs
Messaging QE
Depends On:
  Show dependency treegraph
Reported: 2017-06-20 03:24 EDT by Pavel Moravec
Modified: 2017-06-20 06:39 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Pavel Moravec 2017-06-20 03:24:28 EDT
Description of problem:
Summary says it all :) Having a busy connection (with heartbeats enabled), where both peers send a lot of traffic regularly, the broker sends the heartbeats every X seconds (where X is the configured heartbeat interval).

That is redundant and a bit against specification, stating: "The heartbeat control may be used to generate artificial network traffic when a connection is idle. If a connection is idle for more than twice the negotiated heartbeat delay, the peers MAY be considered disconnected."

See the "when a connection is idle".

Version-Release number of selected component (if applicable):
qpid-cpp-server 0.34-21

How reproducible:

Steps to Reproduce:
1. Start qpidd and run tcpdump
2. Run a sender and a consumer:

qpid-send --connection-options "{'heartbeat':2, 'tcp-nodelay':false, 'reconnect':true, 'reconnect-timeout':2, 'reconnect-interval-min':2, 'reconnect-interval-max':2 }" -m 10000000 --capacity=1024 -a "qqq; {create:always}" &

qpid-receive --connection-options "{'heartbeat':2, 'tcp-nodelay':false, 'reconnect':true, 'reconnect-timeout':2, 'reconnect-interval-min':2, 'reconnect-interval-max':2 }" -m 10000000 --capacity=1024 -a "qqq; {create:always}" --print-content=no &

3. Wait 10 seconds or so and stop tcpdump
4. Check in the tcpdump there are frequent (every 2 seconds on either connection) connection.heartbeat AMQP frames (e.g. use filter "amqp.connection.method == 10"))

Actual results:
There are regular heartbeats triggered by the broker on either connection - despite both connections have busy peers on either end.

Expected results:
No heartbeats sent.

Additional info:
Comment 1 Pavel Moravec 2017-06-20 04:05:53 EDT
FYI current upstream is affected the same way
Comment 2 Pavel Moravec 2017-06-20 06:39:07 EDT
.. and any older release since 0.10 exhibit this behaviour as well. The heartbeat is always sent regardless of any traffic sent or received on the AMQP connection recently.

Note You need to log in before you can comment on or make changes to this bug.