You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (Jira)" <ji...@apache.org> on 2020/11/10 21:47:00 UTC

[jira] [Commented] (ARTEMIS-2981) Core bridge failing

    [ https://issues.apache.org/jira/browse/ARTEMIS-2981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229539#comment-17229539 ] 

Justin Bertram commented on ARTEMIS-2981:
-----------------------------------------

This is essentially a configuration problem although the broker could deal with the situation more gracefully. Here's your bridge from {{global-broker.xml}}:

{code:xml}
<bridge name="global-to-region-s">
    <queue-name>laravel:region-s:default</queue-name>
    <forwarding-address>laravel:region-s:default</forwarding-address>
    <static-connectors>
        <connector-ref>region-s</connector-ref>
    </static-connectors>
</bridge>
{code}
Here's the configuration of the queue "laravel:region-s:default":
{code:xml}
<address name="laravel:region-s:default">
    <anycast>
        <queue name="laravel:region-s:default" max-consumers="0">
            <durable>true</durable>
        </queue>
    </anycast>
</address>
{code}
Since the queue from which the bridge is attempting to consume the message uses {{max-consumers="0"}} then the bridge is unable to initialize. Turning on {{DEBUG}} logging for {{org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl}} reveals this underlying exception:
{noformat}
DEBUG [org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl] Underlying bridge connection failure: ActiveMQQueueMaxConsumerLimitReached[errorType=MAX_CONSUMER_LIMIT_EXCEEDED message=AMQ229200: Maximum Consumer Limit Reached on Queue:(address=laravel:region-s:default,queue=laravel:region-s:default)]
	at org.apache.activemq.artemis.core.server.impl.QueueImpl.addConsumer(QueueImpl.java:1383) [artemis-server-2.15.0.jar:2.15.0]
	at org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl.connect(BridgeImpl.java:1026) [artemis-server-2.15.0.jar:2.15.0]
	at org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl$ConnectRunnable.run(BridgeImpl.java:1189) [artemis-server-2.15.0.jar:2.15.0]
	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.15.0.jar:2.15.0]
	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.15.0.jar:2.15.0]
	at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65) [artemis-commons-2.15.0.jar:2.15.0]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.15.0.jar:2.15.0]
{noformat}
This causes the bridge initialization to break half-way though which means the connection to the remote broker is established and then not properly closed. That's why you see the timeout exceptions on the other side. As I said, the broker should handle this better, but you can avoid the issue by setting {{max-consumers}} > 0.

> Core bridge failing
> -------------------
>
>                 Key: ARTEMIS-2981
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2981
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>    Affects Versions: 2.15.0
>         Environment: I am running on freshly created broker directories with no customizations done except to the {{broker.xml}} files, which I am attaching to this issue.
>            Reporter: Alexander Trauzzi
>            Assignee: Justin Bertram
>            Priority: Major
>         Attachments: global-broker.xml, regional-broker.xml
>
>
> I'm encountering a situation where any bridge configured between two brokers is failing with the following errors showing up in the logs:
> *On the receiving broker:*
>  
> {code:java}
> 411 WARN [org.apache.activemq.artemis.core.client] AMQ212037: Connection failure to /172.27.0.12:61627 has been detected: AMQ229014: Did not receive data from /172.27.0.12:61627 within the 60,000ms connection TTL. The connection will now be closed. [code=CONNECTION_TIMEDOUT]{code}
>  
> *On the outbound broker:*
>  
> {code:java}
> 780 WARN [org.apache.activemq.artemis.core.server] AMQ224091: Bridge BridgeImpl@3a8e6648 [name=region-s-to-global, queue=QueueImpl[name=laravel:global:default, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=29f37694-2371-11eb-90ba-0242ac1b000c], temp=false]@34498f69 targetConnector=ServerLocatorImpl (identity=Bridge region-s-to-global) [initialConnectors=[TransportConfiguration(name=global, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?localPort=61627&port=61616&host=global-broker], discoveryGroupConfiguration=null]] is unable to connect to destination. Retrying
> {code}
>  
> ----
> The nature of the problem does not to my eye indicate a communication or network visibility issue. Despite that, we've still ensured there is full connectivity between the brokers by doing some manual testing with {{nc}} and {{telnet}} with everything checking out fine.
> Going off of the error messages alone, it looks as though the connection to {{61627}} is being successfully made, but that for some reason, the receiving broker is closing the connection after 60s.
> It is not apparent whether this is due to a misconfiguration on my part or due to an issue in Artemis that is causing that connection to become unstable.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)