Trying out master results in weird issues:

Broker A logs a very large amount of this:

10:06:37,292 ERROR [org.apache.activemq.artemis.core.client] AMQ214031: Failed 
to decode buffer, disconnect immediately.: java.lang.IllegalStateException: 
java.lang.IllegalArgumentException: AMQ119032: Invalid type: 1
        at 
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:378)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1144)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1414)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:945)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:806)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
 [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
Caused by: java.lang.IllegalArgumentException: AMQ119032: Invalid type: 1
        at 
org.apache.activemq.artemis.core.protocol.core.impl.PacketDecoder.decode(PacketDecoder.java:455)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:67)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.slowPathDecode(ServerPacketDecoder.java:253)
 [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.decode(ServerPacketDecoder.java:133)
 [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        at 
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:365)
 [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
        ... 19 more


Broker B logs this once (note, no other process listens to addresses defined in 
its acceptors:

10:15:17,703 ERROR [org.apache.activemq.artemis.core.server] AMQ224000: Failure 
in initialisation: io.netty.channel.unix.Errors$NativeIoException: bind(..) 
failed: Address already in use
        at io.netty.channel.unix.Errors.newIOException(Errors.java:122) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.channel.unix.Socket.bind(Socket.java:287) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.epoll.AbstractEpollChannel.doBind(AbstractEpollChannel.java:687)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.epoll.EpollServerSocketChannel.doBind(EpollServerSocketChannel.java:70)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1338)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:999) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:366) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:309) 
[netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
 [netty-all-4.1.22.Final.jar:4.1.22.Final]
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
 [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]


All clients connecting to brokers log a significant amount of:

08:21:01.992 [Thread-2 (ActiveMQ-client-netty-threads-1829548907)] ERROR 
o.a.activemq.artemis.core.client - AMQ214013: Failed to decode packet
java.lang.IllegalArgumentException: AMQ119032: Invalid type: 1
        at 
org.apache.activemq.artemis.core.protocol.core.impl.PacketDecoder.decode(PacketDecoder.java:424)
        at 
org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:60)
        at 
org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:39)
        at 
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:349)
        at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1143)
        at 
org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:610)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:551)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:465)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:437)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)
        at java.lang.Thread.run(Thread.java:748)


And netstat on broker b server lists massive amounts of tcp connections from 
local port 61616 to broker a host with seemingly random ports in TIME_WAIT 
status. It seems like something fundamental is broken causing all tcp packets 
to fail somehow?

Best regards,
- Ilkka



-----Original Message-----
From: Clebert Suconic [mailto:clebert.suco...@gmail.com] 
Sent: 8. maaliskuuta 2018 2:08
To: users@activemq.apache.org
Subject: Re: Artemis 2.4.0 - Issues with memory leaks and JMS message 
redistribution

Can you try master?

On Wed, Mar 7, 2018 at 2:11 AM, Ilkka Virolainen <ilkka.virolai...@bitwise.fi> 
wrote:
> My setup is the same as described in issue #1 of the first message in this 
> thread: NMS clients listening to JMS topics for messages sent by Artemis 
> 1.5.4 clients, both connecting randomly to either of the two brokers in the 
> cluster. Load balancing works at first but eventually this error occurs and 
> the cluster consumer seems to be removed.
>
> I will try to produce a test case reproducing this.
>
> Best regards,
> - Ilkka
>
> -----Original Message-----
> From: Clebert Suconic [mailto:clebert.suco...@gmail.com]
> Sent: 7. maaliskuuta 2018 4:23
> To: users@activemq.apache.org
> Subject: Re: Artemis 2.4.0 - Issues with memory leaks and JMS message 
> redistribution
>
> How do you run into this ?
>
> Are you running amqp messages?
>
> I was going to release 2.5 tomorrow but I wanted to find out first.
>
>
> I am in USA and about to sleep.  If you are in APAC please include as much 
> info as you can for me to replicate this so I can make progress tomorrow.
>
>
> Thanks.
>
> On Tue, Mar 6, 2018 at 8:40 AM Ilkka Virolainen 
> <ilkka.virolai...@bitwise.fi>
> wrote:
>
>> While the memory leak is now fixed in master (thanks Justin!), 
>> unfortunately more issues regarding the load balancing have occurred.
>> The messages are redistributed at first but after a few minutes the 
>> broker
>> (2.5.0 current snapshot) logs the following error and load balancing 
>> of topic messages stop. I found an issue that lists similar errors 
>> but it is marked as closed:
>>
>>
>> https://issues.apache.org/jira/browse/ARTEMIS-1345?jql=project%20%3D%
>> 2 0ARTEMIS%20AND%20text%20~%20NoSuchElementException
>>
>> Does this error seem familiar?
>>
>> 15:06:08,000 WARN  [org.apache.activemq.artemis.core.server] AMQ222151:
>> removing consumer which did not handle a message,
>> consumer=ClusterConnectionBridge@6a50dbc1
>> [name=$.artemis.internal.sf.my-cluster.73a86a21-2066-11e8-a8bc-0021f6
>> e
>> 7cd2d,
>> queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.73a86a21-2066-1
>> 1
>> e8-a8bc-0021f6e7cd2d,
>> postOffice=PostOfficeImpl
>> [server=ActiveMQServerImpl::serverUUID=ae2a7067-2066-11e8-ba18-005056
>> b
>> c41e7],
>> temp=false]@46ca2a06 targetConnector=ServerLocatorImpl
>> (identity=(Cluster-connection-bridge::ClusterConnectionBridge@6a50dbc
>> 1 
>> [name=$.artemis.internal.sf.my-cluster.73a86a21-2066-11e8-a8bc-0021f6
>> e
>> 7cd2d,
>> queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.73a86a21-2066-1
>> 1
>> e8-a8bc-0021f6e7cd2d,
>> postOffice=PostOfficeImpl
>> [server=ActiveMQServerImpl::serverUUID=ae2a7067-2066-11e8-ba18-005056
>> b
>> c41e7],
>> temp=false]@46ca2a06 targetConnector=ServerLocatorImpl 
>> [initialConnectors=[TransportConfiguration(name=netty-connector,
>> factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyCon
>> n
>> ectorFactory)
>> ?port=61616&host=broker-a-host&activemq-passwordcodec=****],
>> discoveryGroupConfiguration=null]]::ClusterConnectionImpl@2143139988[
>> n odeUUID=ae2a7067-2066-11e8-ba18-005056bc41e7,
>> connector=TransportConfiguration(name=netty-connector,
>> factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyCon
>> n
>> ectorFactory)
>> ?port=61616&host=broker-b-host&activemq-passwordcodec=****, address=, 
>> server=ActiveMQServerImpl::serverUUID=ae2a7067-2066-11e8-ba18-005056b
>> c
>> 41e7]))
>> [initialConnectors=[TransportConfiguration(name=netty-connector,
>> factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyCon
>> n
>> ectorFactory)
>> ?port=61616&host=broker-a-host&activemq-passwordcodec=****],
>> discoveryGroupConfiguration=null]],
>> message=Reference[19136928]:NON-RELIABLE:CoreMessage[messageID=191369
>> 2 8,durable=false,userID=null,priority=0,
>> timestamp=0,expiration=0, durable=false, 
>> address=ActiveMQ.Advisory.TempQueue,size=1089,properties=TypedPropert
>> i 
>> es[__HDR_BROKER_IN_TIME=1520341567999,_AMQ_ROUTING_TYPE=0,__HDR_GROUP
>> _
>> SEQUENCE=0,__HDR_COMMAND_ID=0,__HDR_DATASTRUCTURE=[0000
>> 0062 0800 0000 0000 0178 0100 2449 443A 616C 3232 2D35 3833 3735 2D36  ...
>> 3233 2D38 3031 372D 6330 3564 3235 3339 3365 3364 0100 0000 0000 0000 
>> 0000),_AMQ_DUPL_ID=ID:livisovt49l-28730-1520248604578-1:2:0:0:1212,__
>> H
>> DR_MESSAGE_ID=[0000 004D 6E00 017B 0100 2649 443A 6C69 7669 736F 7674
>> 3439 6C2D 3238 3733  ...
>> 00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0004 BC00 0000 0000
>> 0000
>> 00),__HDR_DROPPABLE=false,__HDR_ARRIVAL=0,__HDR_PRODUCER_ID=[0000 
>> 003A
>> 7B01
>> 0026 4944 3A6C 6976 6973 6F76 7434 396C 2D32 3837 3330 2D31  ...  
>> 3032
>> 3438
>> 3630 3435 3738 2D31 3A32 0000 0000 0000 0000 0000 0000 0000
>> 0000),JMSType=Advisory,_AMQ_ROUTE_TO$.artemis.internal.sf.my-cluster.
>> 7
>> 3a86a21-2066-11e8-a8bc-0021f6e7cd2d=[0000
>> 0000 009B AA9C 0000 0000 009B
>> AA9E),bytesAsLongs(10201756,10201758]]]@709863295:
>> java.util.ConcurrentModificationException
>>         at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
>> [rt.jar:1.8.0_152]
>>         at java.util.HashMap$EntryIterator.next(HashMap.java:1476)
>> [rt.jar:1.8.0_152]
>>         at java.util.HashMap$EntryIterator.next(HashMap.java:1474)
>> [rt.jar:1.8.0_152]
>>         at java.util.HashMap.putMapEntries(HashMap.java:512)
>> [rt.jar:1.8.0_152]
>>         at java.util.HashMap.<init>(HashMap.java:490) [rt.jar:1.8.0_152]
>>         at
>> org.apache.activemq.artemis.utils.collections.TypedProperties.<init>(
>> T
>> ypedProperties.java:83)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.message.impl.CoreMessage.<init>(Core
>> M
>> essage.java:347)
>> [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.message.impl.CoreMessage.<init>(Core
>> M
>> essage.java:321)
>> [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.message.impl.CoreMessage.copy(CoreMe
>> s
>> sage.java:374) [artemis-core-client-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectio
>> n
>> Bridge.beforeForward(ClusterConnectionBridge.java:168)
>> [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl.handl
>> e
>> (BridgeImpl.java:581)
>> [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl.handle(QueueIm
>> p
>> l.java:2939) [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueI
>> m
>> pl.java:2309) [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(Qu
>> e
>> ueImpl.java:105) [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.
>> r
>> un(QueueImpl.java:3165)
>> [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(Order
>> e
>> dExecutor.java:42) [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(Order
>> e
>> dExecutor.java:31) [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePending
>> T
>> asks(ProcessorBase.java:66)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
>> j
>> ava:1149)
>> [rt.jar:1.8.0_152]
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
>> java:624)
>> [rt.jar:1.8.0_152]
>>         at
>> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveM
>> Q
>> ThreadFactory.java:118)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>
>> 15:06:08,002 ERROR [org.apache.activemq.artemis.core.server] AMQ224041:
>> Failed to deliver: java.util.NoSuchElementException
>>         at
>> org.apache.activemq.artemis.utils.collections.PriorityLinkedListImpl$
>> P
>> riorityLinkedListIterator.repeat(PriorityLinkedListImpl.java:161)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueI
>> m
>> pl.java:2327) [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(Qu
>> e
>> ueImpl.java:105) [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.
>> r
>> un(QueueImpl.java:3165)
>> [artemis-server-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(Order
>> e
>> dExecutor.java:42) [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(Order
>> e
>> dExecutor.java:31) [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePending
>> T
>> asks(ProcessorBase.java:66)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
>> j
>> ava:1149)
>> [rt.jar:1.8.0_152]
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
>> java:624)
>> [rt.jar:1.8.0_152]
>>         at
>> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveM
>> Q
>> ThreadFactory.java:118)
>> [artemis-commons-2.5.0-SNAPSHOT.jar:2.5.0-SNAPSHOT]
>>
>>
>>
>>
>>
>> -----Original Message-----
>> From: Ilkka Virolainen [mailto:ilkka.virolai...@bitwise.fi]
>> Sent: 1. maaliskuuta 2018 16:59
>> To: users@activemq.apache.org
>> Subject: RE: Artemis 2.4.0 - Issues with memory leaks and JMS message 
>> redistribution
>>
>> An update on this: I have replicated the memory and expiration issues 
>> on current 2.5.0-SNAPSHOT with included client libraries and a one 
>> node broker by modifying an existing artemis example. As messages are 
>> routed to DLQ, paged and expired, memory consumption keeps increasing 
>> and eventually leads to heap space exhaustion rendering the broker unable to 
>> route messages.
>> What should happen is that the memory consumption should stay 
>> reasonable even without expiration due to paging to disk but doubly 
>> so because having expired, the messages shouldn't consume any resources.
>>
>> I'm not certain if the two issues (erroneous statistics on expiration 
>> and the memory leak) are connected but they both do appear at the 
>> same time raising suspicion. A possible cause could be that filtered 
>> message expiration behaves differently than some other means of
>> expiration: it uses a private expiration method that takes a 
>> transaction as a parameter. Unlike the nontransacted expiration 
>> method, it checks for empty bindings separately but doesn't seem to 
>> decrement counters appropriately in this case. Even though I have set 
>> a null expiry-address (<expiry-address />) it is seen as nonnull in 
>> expiration. Then as the expiry address is not null but bindings are 
>> not found, the warning about dropping the message is logged. However, 
>> it seems that the message is never acknowledged and the deliveringCount is 
>> never decreased so delivery metrics end up being wrong.
>>
>> Shouldn't there be an acknowledgment of the message reference 
>> following the logging when the following condition is matched?
>>
>> https://github.com/apache/activemq-artemis/blob/master/artemis-server
>> / 
>> src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.
>> j
>> ava#L2735
>>
>> Also, why is the acknowledgment reason here not expiry but normal? 
>> One would imagine it should be acknowledge(tx, ref, 
>> AckReason.EXPIRED) instead of the default overload so that the 
>> appropriate counters end up being
>> incremented:
>>
>> https://github.com/apache/activemq-artemis/blob/master/artemis-server
>> / 
>> src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.
>> j
>> ava#L2747
>>
>> Best regards,
>> - Ilkka
>>
>> -----Original Message-----
>> From: Ilkka Virolainen [mailto:ilkka.virolai...@bitwise.fi]
>> Sent: 27. helmikuuta 2018 15:20
>> To: users@activemq.apache.org
>> Subject: RE: Artemis 2.4.0 - Issues with memory leaks and JMS message 
>> redistribution
>>
>> Hello,
>>
>> - I don't have consumers on the DLQ and neither are any listed in its 
>> JMX attributes
>> - The messages are being sent to the DLQ by the broker after a 
>> delivery failure on another queue. The delivery failure is expected 
>> and caused by a transactional rollback on the consumer.
>> - I am setting the expiry delay on the broker's DLQ address-settings 
>> (not in message attributes). I'm setting an empty expiry-address in 
>> the same place.
>> - I have a set of broker settings and a small springboot application 
>> with which I was able to replicate the issue. Would you like me to 
>> provide it for you somehow?
>>
>> It seems like there's a some kind of hiccup in message expiration.
>> When the messages routed to the DLQ start expiring, the broker logs:
>>
>> AMQ222146: Message has expired. No bindings for Expiry Address  so 
>> dropping it
>>
>> but when reviewing the DLQ statistics via JMX the ExpiredMessages 
>> counter is not incremented, but the DeliveringCount is. As messages 
>> keep expiring the deliverincount keeps increasing. This feels a lot 
>> like the issue I've been having. Could it be that this process leaks 
>> memory/resources or is it just that the expiration statistics always 
>> assume that expiration results in redelivery thereby causing erroneous 
>> numbers to be reported?
>>
>> Best regards,
>> - Ilkka
>>
>>
>> -----Original Message-----
>> From: Justin Bertram [mailto:jbert...@apache.org]
>> Sent: 23. helmikuuta 2018 16:51
>> To: users@activemq.apache.org
>> Subject: Re: Artemis 2.4.0 - Issues with memory leaks and JMS message 
>> redistribution
>>
>> Couple of questions:
>>
>>  - Do you have any consumers on the DLQ?
>>  - Are messages being sent to the DLQ by the broker automatically (e.g.
>> based on delivery attempt failures) or is that being done by your 
>> application?
>>  - How are you setting the expiry delay?
>>  - Do you have a reproducible test-case?
>>
>>
>> Justin
>>
>> On Fri, Feb 23, 2018 at 4:38 AM, Ilkka Virolainen < 
>> ilkka.virolai...@bitwise.fi> wrote:
>>
>> > I'm still facing an issue with somewhat confusing behavior 
>> > regarding message expiration in the DLQ, maybe related to the 
>> > memory issues I've been having. My aim is to have messages routed 
>> > to DLQ expire and dropped in one hour. To achieve this, I've set an 
>> > empty expiry-address and the appropriate expiry-delay. The problem 
>> > is, most of the messages routed to DLQ end up in an in-delivery 
>> > state - they are not expiring and I cannot remove them via JMX. 
>> > Messagecount in the DLQ is slightly higher than the deliveringcount 
>> > and attempting to remove all messages only removes a number of 
>> > messages that is equal to the difference between deliveringcount 
>> > and messagecount which is approximately a few thousand messages 
>> > while the messagecount is tens of thousands and
>> increasing as message delivery failures occur.
>> >
>> > What could be the reason for this behavior and how could it be avoided?
>> >
>> > -----Original Message-----
>> > From: Ilkka Virolainen [mailto:ilkka.virolai...@bitwise.fi]
>> > Sent: 22. helmikuuta 2018 13:38
>> > To: users@activemq.apache.org
>> > Subject: RE: Artemis 2.4.0 - Issues with memory leaks and JMS 
>> > message redistribution
>> >
>> > To answer my own question in case anyone else is wondering about a 
>> > similar issue, turns out the change in addressing is referred in 
>> > ticket [1] and adding the multicastPrefix and anycastPrefix 
>> > described in the ticket to my broker acceptors seems to have fixed my 
>> > problem.
>> > If the issue regarding memory leaks persists I will try to provide 
>> > a
>> reproducible test case.
>> >
>> > Thank you for your help, Justin.
>> >
>> > Best regards,
>> > - Ilkka
>> >
>> > [1] https://issues.apache.org/jira/browse/ARTEMIS-1644
>> >
>> >
>> > -----Original Message-----
>> > From: Ilkka Virolainen [mailto:ilkka.virolai...@bitwise.fi]
>> > Sent: 22. helmikuuta 2018 12:33
>> > To: users@activemq.apache.org
>> > Subject: RE: Artemis 2.4.0 - Issues with memory leaks and JMS 
>> > message redistribution
>> >
>> > Having removed the address configuration and having switched from
>> > 2.4.0 to yesterday's snapshot of 2.5.0 it seems like the 
>> > redistribution of messages is now working, but there also seems to 
>> > have been a change in addressing between the versions causing 
>> > another problem related to jms.queue / jms.topic prefixing. While 
>> > the NMS clients listen and artemis jms clients send to the same 
>> > topics as described in the previous message, Artemis 2.5.0 prefixes 
>> > the addresses with jms.topic. While the messages are being sent to e.g.
>> > A.B.f64dd592-a8fb-442e-826d-927834d566f4.C.D they are only received 
>> > if I explicitly prefix the listening address with jms.topic, for 
>> > example topic://jms.topic.A.B.*.C.D. Can this somehow be avoided in 
>> > the broker
>> configuration?
>> >
>> > Best regards
>> >
>> > -----Original Message-----
>> > From: Justin Bertram [mailto:jbert...@apache.org]
>> > Sent: 21. helmikuuta 2018 15:19
>> > To: users@activemq.apache.org
>> > Subject: Re: Artemis 2.4.0 - Issues with memory leaks and JMS 
>> > message redistribution
>> >
>> > Your first issue is probably a misconfiguration.  Your 
>> > cluster-connection is using an "address" value of '*' which I 
>> > assume is supposed to mean "all addresses," but the "address" 
>> > element doesn't
>> support wildcards like this.
>> > Just leave it empty to match all addresses.  See the documentation 
>> > [1] for more details.
>> >
>> > Even after you fix that configuration issue you may run into issues.
>> > These may be fixed already via ARTEMIS-1523 and/or ARTEMIS-1680.  
>> > If you have a reproducible test-case then you can verify using the 
>> > head of the master branch.
>> >
>> > For the memory issue it would be helpful to have some heap dumps or 
>> > something to actually see what's actually consuming the memory.
>> > Better yet would be a reproducible test-case.  Do you have either?
>> >
>> >
>> > Justin
>> >
>> > [1] https://activemq.apache.org/artemis/docs/latest/clusters.html
>> >
>> >
>> >
>> > On Wed, Feb 21, 2018 at 5:39 AM, Ilkka Virolainen < 
>> > ilkka.virolai...@bitwise.fi> wrote:
>> >
>> > > Hello,
>> > >
>> > > I am using Artemis 2.4.0 to broker messages through JMS 
>> > > queues/topics between a set of clients. Some are Apache NMS 1.7.2 
>> > > ActiveMQ clients and others are using Artemis JMS client 1.5.4 
>> > > included in Spring Boot
>> > 1.5.3.
>> > > Broker topology is a symmetric cluster of two live nodes with 
>> > > static connectors, both nodes having been setup as replicating 
>> > > colocated backup pairs with scale down. I have two quite 
>> > > frustrating issues at the
>> > moment:
>> > > message redistribution not working correctly and a memory leak 
>> > > causing eventual thread death.
>> > >
>> > > ISSUE #1 - Message redistribution / load balancing not working:
>> > >
>> > > Client 1 (NMS) connects to broker a and starts listening, artemis 
>> > > creates the following address:
>> > >
>> > > (Broker a):
>> > > A.B.*.C.D
>> > > |-queues
>> > > |-multicast
>> > >   |-f64dd592-a8fb-442e-826d-927834d566f4
>> > >
>> > > Server 1 (artemis-jms-client) connects to broker b and sends a 
>> > > message to
>> > > topic: A.B.f64dd592-a8fb-442e-826d-927834d566f4.C.D - this should 
>> > > be routed to broker a since the corresponding queue has no 
>> > > consumers on broker b (the queue does not exist). This however 
>> > > does not happen and the client receives no messages. Broker b has 
>> > > some other clients connected, causing similar (but not the same) 
>> > > queues having been
>> created:
>> > >
>> > > (Broker b):
>> > > A.B.*.C.D
>> > > |-queues
>> > > |-multicast
>> > >   |-1eb48079-7fd8-40e9-b822-bcc25695ced0
>> > >   |-9f295257-c352-4ae6-b74b-d5994f330485
>> > >
>> > >
>> > > ISSUE #2: - Memory leak and eventual thread death
>> > >
>> > > Artemis broker has 4GB allocated heap space and global-max-size 
>> > > is set up as half of that (being the default setting).
>> > > Address-full-policy is set to PAGE for all addresses and some 
>> > > individual addresses have small max-size-bytes values set e.g.
>> > > 104857600. As far as I know the paging settings should limit 
>> > > memory usage but what happens is that at times Artemis uses the 
>> > > whole heap space, encounters an out of memory error and
>> > > dies:
>> > >
>> > > 05:39:29,510 WARN  [org.eclipse.jetty.util.thread.QueuedThreadPool] :
>> > > java.lang.OutOfMemoryError: Java heap space
>> > > 05:39:16,646 WARN  [io.netty.channel.ChannelInitializer] Failed 
>> > > to initialize a channel. Closing: [id: ...]: java.lang.OutOfMemoryError:
>> > > Java heap space
>> > > 05:41:05,597 WARN
>> > > [org.eclipse.jetty.util.thread.QueuedThreadPool]
>> > > Unexpected thread death: org.eclipse.jetty.util.thread.
>> > > QueuedThreadPool$2@5ffaba31 in
>> > > qtp20111564{STARTED,8<=8<=200,i=2,q=0}
>> > >
>> > > Are these known issues in Artemis or misconfigurations in the brokers?
>> > >
>> > > The broker configurations are as follows. Broker b has an 
>> > > identical configuration excluding that the cluster connector's 
>> > > connector-ref and static-connector connector-ref refer to broker 
>> > > b and broker a
>> > respectively.
>> > >
>> > > Best regards,
>> > >
>> > > broker.xml (broker a):
>> > >
>> > > <?xml version='1.0'?>
>> > > <configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/ 
>> > > 2001/XMLSchema-instance" xsi:schemaLocation="urn:activemq 
>> > > /schema/artemis-configuration.xsd">
>> > >     <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/ 
>> > > 2001/XMLSchema-instance" xsi:schemaLocation="urn:activemq:core ">
>> > >         <name>[broker-a-ip]</name>
>> > >         <persistence-enabled>true</persistence-enabled>
>> > >
>> > >         <journal-type>NIO</journal-type>
>> > >
>> > >         <paging-directory>...</paging-directory>
>> > >         <bindings-directory>...</bindings-directory>
>> > >         <journal-directory>...</journal-directory>
>> > >         <large-messages-directory>...</large-messages-directory>
>> > >
>> > >         <journal-datasync>true</journal-datasync>
>> > >         <journal-min-files>2</journal-min-files>
>> > >         <journal-pool-files>-1</journal-pool-files>
>> > >         <journal-buffer-timeout>788000</journal-buffer-timeout>
>> > >         <disk-scan-period>5000</disk-scan-period>
>> > >
>> > >         <max-disk-usage>97</max-disk-usage>
>> > >
>> > >         <critical-analyzer>true</critical-analyzer>
>> > >         <critical-analyzer-timeout>120000</critical-analyzer-timeout>
>> > >         <critical-analyzer-check-period>60000</critical-
>> > > analyzer-check-period>
>> > >         <critical-analyzer-policy>HALT</critical-analyzer-policy>
>> > >
>> > >         <acceptors>
>> > >             <acceptor name="invm-acceptor">vm://0</acceptor>
>> > >             <acceptor name="artemis">tcp://0.0.0.0:61616</acceptor>
>> > >             <acceptor
>> > > name="ssl">tcp://0.0.0.0:61617?sslEnabled=true;
>> > > keyStorePath=...;keyStorePassword=...</acceptor>
>> > >         </acceptors>
>> > >         <connectors>
>> > >             <connector name="invm-connector">vm://0</connector>
>> > >             <connector name="netty-connector">tcp://[ 
>> > > broker-a-ip]:61616</connector>
>> > >             <connector name="broker-b-connector">[ 
>> > > broker-b-ip]:61616</connector>
>> > >         </connectors>
>> > >
>> > >         <cluster-connections>
>> > >             <cluster-connection name="cluster-name">
>> > >                 <address>*</address>
>> > >                 <connector-ref>netty-connector</connector-ref>
>> > >                 <retry-interval>500</retry-interval>
>> > >                 <reconnect-attempts>5</reconnect-attempts>
>> > >                 <use-duplicate-detection>true</use-duplicate-detection>
>> > >                 <message-load-balancing>ON_DEMAND</message-load-
>> > balancing>
>> > >                 <max-hops>1</max-hops>
>> > >                 <static-connectors>
>> > >                     <connector-ref>broker-b-connector</connector-ref>
>> > >                 </static-connectors>
>> > >             </cluster-connection>
>> > >         </cluster-connections>
>> > >
>> > >         <ha-policy>
>> > >             <replication>
>> > >                 <colocated>
>> > >
>> > > <backup-request-retry-interval>5000</backup-request-
>> > > retry-interval>
>> > >                     <max-backups>3</max-backups>
>> > >                     <request-backup>true</request-backup>
>> > >                     <backup-port-offset>100</backup-port-offset>
>> > >                     <excludes>
>> > >                         <connector-ref>invm-connector</connector-ref>
>> > >                         <connector-ref>netty-connector</connector-ref>
>> > >                     </excludes>
>> > >                     <master>
>> > >                         <check-for-live-server>true</
>> > > check-for-live-server>
>> > >                     </master>
>> > >                     <slave>
>> > >                         <restart-backup>false</restart-backup>
>> > >                         <scale-down />
>> > >                     </slave>
>> > >                 </colocated>
>> > >             </replication>
>> > >         </ha-policy>
>> > >
>> > >         <cluster-user>ARTEMIS.CLUSTER.ADMIN.USER</cluster-user>
>> > >         <cluster-password>[the shared cluster 
>> > > password]</cluster-password>
>> > >
>> > >         <security-settings>
>> > >             <security-setting match="#">
>> > >                 <permission type="createDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="deleteDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="createNonDurableQueue"
>> > > roles="amq, other-role"  />
>> > >                 <permission type="createAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="deleteNonDurableQueue"
>> > > roles="amq, other-role" />
>> > >                 <permission type="deleteAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="consume" roles="amq, other-role" />
>> > >                 <permission type="browse" roles="amq, other-role" />
>> > >                 <permission type="send" roles="amq, other-role" />
>> > >                 <permission type="manage" roles="amq" />
>> > >             </security-setting>
>> > >             <security-setting match="A.some.queue">
>> > >                 <permission type="createNonDurableQueue"
>> > > roles="amq, other-role" />
>> > >                 <permission type="deleteNonDurableQueue"
>> > > roles="amq, other-role" />
>> > >                 <permission type="createDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="deleteDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="createAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="deleteAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="consume" roles="amq, other-role" />
>> > >                 <permission type="browse" roles="amq, other-role" />
>> > >                 <permission type="send" roles="amq, other-role" />
>> > >             </security-setting>
>> > >                 <security-setting match="A.some.other.queue">
>> > >                 <permission type="createNonDurableQueue"
>> > > roles="amq, other-role" />
>> > >                 <permission type="deleteNonDurableQueue"
>> > > roles="amq, other-role" />
>> > >                 <permission type="createDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="deleteDurableQueue" roles="amq, 
>> > > other-role" />
>> > >                 <permission type="createAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="deleteAddress" roles="amq,
>> other-role"
>> > />
>> > >                 <permission type="consume" roles="amq, other-role" />
>> > >                 <permission type="browse" roles="amq, other-role" />
>> > >                 <permission type="send" roles="amq, other-role" />
>> > >             </security-setting>
>> > >             ...
>> > >             ... etc.
>> > >             ...
>> > >         </security-settings>
>> > >
>> > >         <address-settings>
>> > >             <address-setting match="activemq.management#">
>> > >                 <dead-letter-address>DLQ</dead-letter-address>
>> > >                 <expiry-address>ExpiryQueue</expiry-address>
>> > >                 <redelivery-delay>0</redelivery-delay>
>> > >                 <max-size-bytes>-1</max-size-bytes>
>> > >
>> > > <message-counter-history-day-limit>10</message-counter-
>> > > history-day-limit>
>> > >                 <address-full-policy>PAGE</address-full-policy>
>> > >             </address-setting>
>> > >             <!--default for catch all -->
>> > >             <address-setting match="#">
>> > >                 <dead-letter-address>DLQ</dead-letter-address>
>> > >                 <expiry-address>ExpiryQueue</expiry-address>
>> > >                 <redelivery-delay>0</redelivery-delay>
>> > >                 <max-size-bytes>-1</max-size-bytes>
>> > >
>> > > <message-counter-history-day-limit>10</message-counter-
>> > > history-day-limit>
>> > >                 <address-full-policy>PAGE</address-full-policy>
>> > >                 <redistribution-delay>1000</redistribution-delay>
>> > >             </address-setting>
>> > >             <address-setting match="DLQ">
>> > >                 <!-- 100 * 1024 * 1024 -> 100MB -->
>> > >                 <max-size-bytes>104857600</max-size-bytes>
>> > >                 <!-- 1000 * 60 * 60 -> 1h -->
>> > >                 <expiry-delay>3600000</expiry-delay>
>> > >                 <expiry-address />
>> > >             </address-setting>
>> > >             <address-setting match="A.some.queue">
>> > >
>> > > <redelivery-delay-multiplier>1.0</redelivery-delay-
>> > > multiplier>
>> > >                 <redelivery-delay>0</redelivery-delay>
>> > >                 <max-redelivery-delay>10</max-redelivery-delay>
>> > >             </address-setting>
>> > >                 <address-setting match="A.some.other.queue">
>> > >
>> > > <redelivery-delay-multiplier>1.0</redelivery-delay-
>> > > multiplier>
>> > >                 <redelivery-delay>0</redelivery-delay>
>> > >                 <max-redelivery-delay>10</max-redelivery-delay>
>> > >                 <max-delivery-attempts>1</max-delivery-attempts>
>> > >                 <max-size-bytes>104857600</max-size-bytes>
>> > >             </address-setting>
>> > >             ...
>> > >             ... etc.
>> > >             ...
>> > >         </address-settings>
>> > >
>> > >         <addresses>
>> > >             <address name="DLQ">
>> > >                 <anycast>
>> > >                     <queue name="DLQ" />
>> > >                 </anycast>
>> > >             </address>
>> > >             <address name="ExpiryQueue">
>> > >                 <anycast>
>> > >                     <queue name="ExpiryQueue" />
>> > >                 </anycast>
>> > >             </address>
>> > >             <address name="A.some.queue">
>> > >                 <anycast>
>> > >                     <queue name="A.some.queue">
>> > >                         <durable>true</durable>
>> > >                     </queue>
>> > >                 </anycast>
>> > >             </address>
>> > >             <address name="A.some.other.queue">
>> > >                 <anycast>
>> > >                     <queue name="A.some.other.queue">
>> > >                         <durable>true</durable>
>> > >                     </queue>
>> > >                 </anycast>
>> > >             </address>
>> > >             ...
>> > >             ... etc.
>> > >             ...
>> > >         </addresses>
>> > >     </core>
>> > > </configuration>
>> > >
>> >
>>
> --
> Clebert Suconic



--
Clebert Suconic

Reply via email to