[
https://issues.apache.org/jira/browse/ARTEMIS-4571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Bertram updated ARTEMIS-4571:
------------------------------------
Description:
The following WARN can occur due to a race condition between the initialization
of {{org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry}} and the
periodic check by {{RemotingServiceImpl$FailureCheckAndFlushThread}}:
{noformat}
AMQ212037: Connection failure to invm:0 has been detected: AMQ229014: Did not
receive data from invm:0 within the -1ms connection TTL. The connection will
now be closed. [code=CONNECTION_TIMEDOUT]{noformat}
Also, the following ERROR message can happen at the same time:
{noformat}
ActiveMQNotConnectedException[errorType=NOT_CONNECTED message=AMQ219010:
Connection is destroyed]{noformat}
Internally, the
{{org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry}} is subject to
the following race condition:
# {{ConnectionEntry}} is initilalized with the default
{{ActiveMQClient.DEFAULT_CONNECTION_TTL}} (60000) at
{{CoreProtocolManager#createConnectionEntry()}}
# {{RemotingServiceImpl$FailureCheckAndFlushThread}} evaluates {{if (entry.ttl
!= -1)}} as {{true}}.
# A {{Ping}} is sent. Then {{ttl}} is updated to
{{ActiveMQClient.DEFAULT_CONNECTION_TTL_INVM}} (-1).
# {{RemotingServiceImpl$FailureCheckAndFlushThread}} checks {{if (now >=
entry.lastCheck + entry.ttl)}}. Since {{ttl}} has been updated to {{-1}} the
check passes (= expired) and the connection will be added to {{toRemove}}.
# The WARN and ERROR occur.
> Race condition w/TTL impacting in-vm connections
> ------------------------------------------------
>
> Key: ARTEMIS-4571
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4571
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: Justin Bertram
> Assignee: Justin Bertram
> Priority: Major
>
> The following WARN can occur due to a race condition between the
> initialization of
> {{org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry}} and the
> periodic check by {{RemotingServiceImpl$FailureCheckAndFlushThread}}:
> {noformat}
> AMQ212037: Connection failure to invm:0 has been detected: AMQ229014: Did not
> receive data from invm:0 within the -1ms connection TTL. The connection will
> now be closed. [code=CONNECTION_TIMEDOUT]{noformat}
> Also, the following ERROR message can happen at the same time:
> {noformat}
> ActiveMQNotConnectedException[errorType=NOT_CONNECTED message=AMQ219010:
> Connection is destroyed]{noformat}
> Internally, the
> {{org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry}} is subject
> to the following race condition:
> # {{ConnectionEntry}} is initilalized with the default
> {{ActiveMQClient.DEFAULT_CONNECTION_TTL}} (60000) at
> {{CoreProtocolManager#createConnectionEntry()}}
> # {{RemotingServiceImpl$FailureCheckAndFlushThread}} evaluates {{if
> (entry.ttl != -1)}} as {{true}}.
> # A {{Ping}} is sent. Then {{ttl}} is updated to
> {{ActiveMQClient.DEFAULT_CONNECTION_TTL_INVM}} (-1).
> # {{RemotingServiceImpl$FailureCheckAndFlushThread}} checks {{if (now >=
> entry.lastCheck + entry.ttl)}}. Since {{ttl}} has been updated to {{-1}} the
> check passes (= expired) and the connection will be added to {{toRemove}}.
> # The WARN and ERROR occur.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)