[
https://issues.apache.org/jira/browse/QPID-8680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomas Vavricka updated QPID-8680:
---------------------------------
Description:
[AMQP 1.0
specification|https://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf]
in Chapter 2.4.5 states '{_}Connections are subject to an idle timeout
threshold. The timeout is triggered by a local peer when no frames{_} _are
received after a threshold value is exceeded. The idle timeout is measured in
milliseconds, and starts from_ _the time the last frame is received. If the
threshold is exceeded, then a peer SHOULD try to gracefully close the_
_connection using a close frame with an error explaining why. If the remote
peer does not respond gracefully within_ _a threshold to this, then the peer
MAY close the TCP socket._ _Each peer has its own (independent) idle timeout.
At connection open each peer communicates the maximum_ _period between activity
(frames) on the connection that it desires from its partner.The open frame
carries the idletime-out field for this purpose. *To avoid spurious timeouts,
the value in idle-time-out SHOULD be half the peer’s*_ {*}_actual timeout
threshold._{*}'
When the idle timeout is configured using the context variable
{{qpid.port.heartbeatDelay}}, the broker closes the connection if the other
peer does not send a heartbeat frame within the value specified in
{{qpid.port.heartbeatDelay}}. However, the broker should interpret the value of
{{qpid.port.heartbeatDelay}} as half of the actual timeout, as recommended by
the AMQP specification.
*Note:* The AMQP .NET Lite library (version 2.4.11) can be used to reproduce
the issue, as it sends heartbeat frames at intervals matching the idle timeout
specified in the AMQP OPEN frame.
was:
[AMQP 1.0
specification|https://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf]
in Chapter 2.4.5 states '{_}Connections are subject to an idle timeout
threshold. The timeout is triggered by a local peer when no frames{_} _are
received after a threshold value is exceeded. The idle timeout is measured in
milliseconds, and starts from_ _the time the last frame is received. If the
threshold is exceeded, then a peer SHOULD try to gracefully close the_
_connection using a close frame with an error explaining why. If the remote
peer does not respond gracefully within_ _a threshold to this, then the peer
MAY close the TCP socket._ _Each peer has its own (independent) idle timeout.
At connection open each peer communicates the maximum_ _period between activity
(frames) on the connection that it desires from its partner.The open frame
carries the idletime-out field for this purpose. *To avoid spurious timeouts,
the value in idle-time-out SHOULD be half the peer’s*_ {*}_actual timeout
threshold._{*}'
When the incoming idle timeout is configured using the context variable
{{{}qpid.port.heartbeatDelay{}}}, the idle timeout value sent in the AMQP Open
frame is not halved, as recommended by the AMQP specification.
For example, if {{qpid.port.heartbeatDelay}} is set to 60, the Open frame sends
an idle timeout value of 60000.
{noformat}
09:28:32.118 [AmqpProvider :(1):[amqp://localhost:20405]] TRACE
org.apache.qpid.jms.provider.amqp.FRAMES – [896644936:0] RECV: Open{
containerId='10a79ad9-ae87-414b-b557-393547c7f932', hostname='null',
maxFrameSize=262144, channelMax=254, idleTimeOut=60000, outgoingLocales=null,
incomingLocales=null, offeredCapabilities=[ANONYMOUS-RELAY, SHARED-SUBS,
sole-connection-for-container], desiredCapabilities=null,
properties={product=Apache Qpid Broker-J Core, version=9.2.0,
qpid.build=0a84538aee48598d57df9550312554b92a2b5f6d,
qpid.instance_name=test-broker, qpid.virtualhost_properties_supported=true,
sole-connection-detection-policy=0}}
{noformat}
> [Broker-J] Halve the configured idle timeout
> --------------------------------------------
>
> Key: QPID-8680
> URL: https://issues.apache.org/jira/browse/QPID-8680
> Project: Qpid
> Issue Type: Improvement
> Components: Broker-J
> Reporter: Tomas Vavricka
> Priority: Minor
> Fix For: qpid-java-broker-9.2.1
>
>
> [AMQP 1.0
> specification|https://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf]
> in Chapter 2.4.5 states '{_}Connections are subject to an idle timeout
> threshold. The timeout is triggered by a local peer when no frames{_} _are
> received after a threshold value is exceeded. The idle timeout is measured in
> milliseconds, and starts from_ _the time the last frame is received. If the
> threshold is exceeded, then a peer SHOULD try to gracefully close the_
> _connection using a close frame with an error explaining why. If the remote
> peer does not respond gracefully within_ _a threshold to this, then the peer
> MAY close the TCP socket._ _Each peer has its own (independent) idle timeout.
> At connection open each peer communicates the maximum_ _period between
> activity (frames) on the connection that it desires from its partner.The open
> frame carries the idletime-out field for this purpose. *To avoid spurious
> timeouts, the value in idle-time-out SHOULD be half the peer’s*_ {*}_actual
> timeout threshold._{*}'
> When the idle timeout is configured using the context variable
> {{qpid.port.heartbeatDelay}}, the broker closes the connection if the other
> peer does not send a heartbeat frame within the value specified in
> {{qpid.port.heartbeatDelay}}. However, the broker should interpret the value
> of {{qpid.port.heartbeatDelay}} as half of the actual timeout, as recommended
> by the AMQP specification.
> *Note:* The AMQP .NET Lite library (version 2.4.11) can be used to reproduce
> the issue, as it sends heartbeat frames at intervals matching the idle
> timeout specified in the AMQP OPEN frame.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]