You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Tomas Vavricka <va...@apache.org> on 2025/09/19 07:53:05 UTC

Qpid JMS client: first heartbeat interval differs from subsequent ones

Hi,

I noticed that the first heartbeat from the Qpid JMS client (2.9.0) is sent at the interval specified in the Open frame (60 seconds), while subsequent heartbeats are sent at half that interval (30 seconds). Shouldn't the first heartbeat also follow the shorter interval (30 seconds)?

Related AMQP frames from client point of view:

09:17:34.525 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Open{ containerId='ID:69e3176a-e963-4e69-9d25-5fc85496421c:1', hostname='localhost', maxFrameSize=1048576, channelMax=32767, idleTimeOut=15000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=[sole-connection-for-container, DELAYED_DELIVERY, ANONYMOUS-RELAY, SHARED-SUBS], properties={product=QpidJMS, version=2.9.0, platform=JVM: 21.0.8, 21.0.8+9-Ubuntu-0ubuntu124.04.1, Ubuntu, OS: Linux, 6.8.0-79-generic, amd64}}
09:17:34.536 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Open{ containerId='ed35d671-9ee8-4152-b26f-5010a08c9e73', 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.1, qpid.build=0a84538aee48598d57df9550312554b92a2b5f6d, qpid.instance_name=scs-internal, qpid.virtualhost_properties_supported=true, sole-connection-detection-policy=0}}
...
09:17:42.105 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:17:49.608 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:17:57.115 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:04.622 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:12.129 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:19.638 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:27.146 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:34.569 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
09:18:34.646 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:42.153 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:49.660 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:18:57.167 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:19:04.578 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
09:19:04.668 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:19:12.176 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:19:19.683 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:19:27.191 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
09:19:34.587 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
09:19:34.691 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame

Regards,
Tomas

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Qpid JMS client: first heartbeat interval differs from subsequent ones

Posted by Robbie Gemmell <ro...@gmail.com>.
Yep, known about this one for a while.
https://issues.apache.org/jira/browse/QPIDJMS-425

From what I recall it's due to the way we drive proton to calculate
the next update, coupled with the way it calculates the next point to
need a check / send, and the fact we dont know both peers timeout when
we start doing that, and possibly even also coupled with specific
local and remote timeouts chosen. I think I looked at changing it at
the time and it was awkward, so it's just remained that way as it is
still not actually incorrect as it is, it's just inconsistent in its
pessimism of the remote peers advertised value.

Robbie

On Fri, 19 Sept 2025 at 08:53, Tomas Vavricka <va...@apache.org> wrote:
>
> Hi,
>
> I noticed that the first heartbeat from the Qpid JMS client (2.9.0) is sent at the interval specified in the Open frame (60 seconds), while subsequent heartbeats are sent at half that interval (30 seconds). Shouldn't the first heartbeat also follow the shorter interval (30 seconds)?
>
> Related AMQP frames from client point of view:
>
> 09:17:34.525 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Open{ containerId='ID:69e3176a-e963-4e69-9d25-5fc85496421c:1', hostname='localhost', maxFrameSize=1048576, channelMax=32767, idleTimeOut=15000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=[sole-connection-for-container, DELAYED_DELIVERY, ANONYMOUS-RELAY, SHARED-SUBS], properties={product=QpidJMS, version=2.9.0, platform=JVM: 21.0.8, 21.0.8+9-Ubuntu-0ubuntu124.04.1, Ubuntu, OS: Linux, 6.8.0-79-generic, amd64}}
> 09:17:34.536 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Open{ containerId='ed35d671-9ee8-4152-b26f-5010a08c9e73', 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.1, qpid.build=0a84538aee48598d57df9550312554b92a2b5f6d, qpid.instance_name=scs-internal, qpid.virtualhost_properties_supported=true, sole-connection-detection-policy=0}}
> ...
> 09:17:42.105 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:17:49.608 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:17:57.115 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:04.622 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:12.129 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:19.638 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:27.146 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:34.569 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
> 09:18:34.646 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:42.153 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:49.660 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:18:57.167 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:19:04.578 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
> 09:19:04.668 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:19:12.176 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:19:19.683 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:19:27.191 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
> 09:19:34.587 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] SENT: Empty Frame
> 09:19:34.691 [AmqpProvider :(1):[amqp://localhost:20406]] TRACE org.apache.qpid.jms.provider.amqp.FRAMES -- [1552999801:0] RECV: Empty Frame
>
> Regards,
> Tomas
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org