You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Marco Geri (Jira)" <ji...@apache.org> on 2025/07/18 12:02:00 UTC

[jira] (PROTON-2900) `IdleTimeoutCheck` not rescheduled after broker's AMQP Open frame, causing premature connection closure

    [ https://issues.apache.org/jira/browse/PROTON-2900 ]


    Marco Geri deleted comment on PROTON-2900:
    ------------------------------------

was (Author: JIRAUSER295325):
After enabling the PN_TRACE_FMR=true, I noticed another strange behaviour.
When setting "qpid.port.heartbeatDelay=10", QPID BrokerJ 9.2.1 does not disconnect the client after login, but the client sends an empty AMQP frame every 15 seconds as a heartbeat.
BrokerJ doesn't disconnect the client due to inactivity because of  QPID-8680, which causes it to consider the heartbeatDelay as half of the inactivity timeout before disconnecting the client.
However, shouldn't ProtonJ2 send heartbeats according to the configured idleTimeout - that is, every 10 seconds?

> `IdleTimeoutCheck` not rescheduled after broker's AMQP Open frame, causing premature connection closure
> -------------------------------------------------------------------------------------------------------
>
>                 Key: PROTON-2900
>                 URL: https://issues.apache.org/jira/browse/PROTON-2900
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: protonj2
>    Affects Versions: protonj2-1.0.0-M23
>            Reporter: Marco Geri
>            Assignee: Timothy A. Bish
>            Priority: Major
>
> While testing with BrokerJ 9.2.1 with AMQP 1.0 protocol, I configured the broker to request heartbeats every 5 seconds using the setting {{{}qpid.port.heartbeatDelay=5{}}}.
> However, even with a simple login test (without sending any other messages), the connection is closed by the broker after 10 seconds due to inactivity. It appears that the client library does not send any idle (heartbeat) frames during this time.
> After a quick debugging session, it seems that the {{IdleTimeoutCheck}} in the {{ProtonEngine}} is scheduled immediately with a timeout of 10 seconds, before the AMQP Open frame from the broker is received. The Open frame from the broker specifies a 5-second idle timeout, but the {{IdleTimeoutCheck}} is *not* rescheduled after this frame is processed.
> As a result, the client does not send heartbeat frames within the expected timeframe, and the broker closes the connection due to inactivity.
> *Note:* I ran the test using BrokerJ version 9.2.1, which includes a fix for the {{heartbeatDelay}} parameter (see QPID-8680).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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