[
https://issues.apache.org/jira/browse/ARTEMIS-1416?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16260891#comment-16260891
]
ASF GitHub Bot commented on ARTEMIS-1416:
-----------------------------------------
GitHub user clebertsuconic opened a pull request:
https://github.com/apache/activemq-artemis/pull/1663
ARTEMIS-1416 Implementing cache on queue and address querying
This will cache the last query, optimizing most of the cases
This won't optimize the case where you are sending producers with different
address,
but this is not the one I'm after now.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/clebertsuconic/activemq-artemis ARTEMIS-1416
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/activemq-artemis/pull/1663.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1663
----
commit 5548ec974db5da5ea1d99090b24e5d375e96d41a
Author: Clebert Suconic <[email protected]>
Date: 2017-11-21T15:12:20Z
ARTEMIS-1416 Implementing cache on queue and address querying
This will cache the last query, optimizing most of the cases
This won't optimize the case where you are sending producers with different
address,
but this is not the one I'm after now.
----
> Queue autocreate does not autocreate queue if address already exists
> --------------------------------------------------------------------
>
> Key: ARTEMIS-1416
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1416
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker, OpenWire
> Affects Versions: 2.3.0
> Reporter: Jiri Daněk
> Assignee: Howard Gao
>
> # Configure <journal-type>NIO</journal-type> in broker.xml (that is the
> default if you don't have libaio on your system)
> # Start Artemis Broker
> # Excecute test
> https://github.com/jdanekrh/jms-reproducers/blob/master/src/test/java/org/apache/activemq/artemis/tests/integration/jms/largemessage/JMSLargeMessageTest.java.
> (Two tests. testSmallString sends message of size 1024 and testHugeString
> sends message of size 1024*1024. Using Core JMS client, activemq-client and
> qpid-jms-client in turn)
> In case of testSmallString, Core and AMQP fails, OpenWire succeeds. The
> problem here as I see it is that the test creates an address, but not a
> queue. There is queue autocreate turned on, so I'd expect queue to be
> created. It is not, except for OpenWire.
> In case of testHugeString, this fails for all. In case of Core and AMQP, the
> cause is IMO the same as in testSmallString. In case of OpenWire, there are
> the following scary error messages, reproduced below.
> If I modify the test to create both address and queue, then all the tests in
> the class pass.
> The OpenWire error in testHugeString
> {noformat}
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
> details.
> javax.jms.JMSException: Cannot find add info 115 on compactor or current
> records
> at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1399)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1428)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1323)
> at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1967)
> at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:288)
> at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:223)
> at
> org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241)
> at
> org.apache.activemq.artemis.tests.integration.jms.largemessage.JMSLargeMessageTest.sendStringOfSize(JMSLargeMessageTest.java:88)
> at
> org.apache.activemq.artemis.tests.integration.jms.largemessage.JMSLargeMessageTest.testHugeString(JMSLargeMessageTest.java:62)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
> at
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.IllegalStateException: Cannot find add info 115 on
> compactor or current records
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkKnownRecordID(JournalImpl.java:994)
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendUpdateRecord(JournalImpl.java:813)
> at
> org.apache.activemq.artemis.core.journal.Journal.appendUpdateRecord(Journal.java:98)
> at
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.storeReference(AbstractJournalStorageManager.java:382)
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.processRoute(PostOfficeImpl.java:1155)
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:820)
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:722)
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doSend(ServerSessionImpl.java:1688)
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1365)
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1309)
> at
> org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.lambda$send$0(AMQSession.java:357)
> at
> org.apache.activemq.artemis.core.paging.impl.PagingStoreImpl.checkMemory(PagingStoreImpl.java:706)
> at
> org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:353)
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1458)
> at
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768)
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.bufferReceived(OpenWireConnection.java:273)
> at
> org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:642)
> at
> org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> at
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1342)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:934)
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:979)
> at
> io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:338)
> at
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
> at
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:312)
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
> ... 1 more
> {noformat}
> Logs from broker
> {noformat}
> 14:57:02,113 ERROR
> [org.apache.activemq.artemis.core.journal.impl.JournalImpl]
> appendAddRecord::java.lang.IllegalStateException: Can't write records bigger
> than the bufferSize(501760) on the journal: java.lang.IllegalStateException:
> Can't write records bigger than the bufferSize(501760) on the journal
> at
> org.apache.activemq.artemis.core.io.buffer.TimedBuffer.checkSize(TimedBuffer.java:198)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.io.AbstractSequentialFile.fits(AbstractSequentialFile.java:168)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.switchFileIfNecessary(JournalImpl.java:2918)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendRecord(JournalImpl.java:2640)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.access$200(JournalImpl.java:88)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl$1.run(JournalImpl.java:778)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> [artemis-commons-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> [artemis-commons-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.utils.actors.ProcessorBase$ExecutorTask.run(ProcessorBase.java:53)
> [artemis-commons-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [rt.jar:1.8.0_141]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [rt.jar:1.8.0_141]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141]
> 14:57:02,115 WARN
> [org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession] Cannot
> find add info 115 on compactor or current records:
> java.lang.IllegalStateException: Cannot find add info 115 on compactor or
> current records
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkKnownRecordID(JournalImpl.java:994)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendUpdateRecord(JournalImpl.java:813)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.journal.Journal.appendUpdateRecord(Journal.java:98)
> [artemis-journal-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.storeReference(AbstractJournalStorageManager.java:382)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.processRoute(PostOfficeImpl.java:1155)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:820)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:722)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doSend(ServerSessionImpl.java:1688)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1365)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1309)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.lambda$send$0(AMQSession.java:357)
> [artemis-openwire-protocol-2.4.0-SNAPSHOT.jar:]
> at
> org.apache.activemq.artemis.core.paging.impl.PagingStoreImpl.checkMemory(PagingStoreImpl.java:706)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:353)
> [artemis-openwire-protocol-2.4.0-SNAPSHOT.jar:]
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1458)
> [artemis-openwire-protocol-2.4.0-SNAPSHOT.jar:]
> at
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768)
> [activemq-client-5.14.5.jar:5.14.5]
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.bufferReceived(OpenWireConnection.java:273)
> [artemis-openwire-protocol-2.4.0-SNAPSHOT.jar:]
> at
> org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:642)
> [artemis-server-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
> [artemis-core-client-2.4.0-SNAPSHOT.jar:2.4.0-SNAPSHOT]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1342)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:934)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:979)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:338)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:312)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
> [netty-all-4.1.14.Final.jar:4.1.14.Final]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141]
> 14:57:02,456 WARN [org.apache.activemq.artemis.core.server] AMQ222061:
> Client connection failed, clearing up resources for session
> deb44765-97b9-11e7-9b2d-185e0fec8ce5
> 14:57:02,456 WARN [org.apache.activemq.artemis.core.server] AMQ222061:
> Client connection failed, clearing up resources for session
> de860bda-97b9-11e7-8f5e-185e0fec8ce5
> 14:57:02,456 WARN [org.apache.activemq.artemis.core.server] AMQ222107:
> Cleared up resources for session deb44765-97b9-11e7-9b2d-185e0fec8ce5
> 14:57:02,457 WARN [org.apache.activemq.artemis.core.server] AMQ222061:
> Client connection failed, clearing up resources for session
> ID:nixos-45797-1505221021784-1:1:-1
> 14:57:02,457 WARN [org.apache.activemq.artemis.core.server] AMQ222107:
> Cleared up resources for session ID:nixos-45797-1505221021784-1:1:-1
> 14:57:02,457 WARN [org.apache.activemq.artemis.core.server] AMQ222107:
> Cleared up resources for session de860bda-97b9-11e7-8f5e-185e0fec8ce5
> 14:57:02,474 WARN [org.apache.activemq.artemis.core.server] AMQ222061:
> Client connection failed, clearing up resources for session
> ID:nixos-45797-1505221021784-1:1:1
> 14:57:02,474 WARN [org.apache.activemq.artemis.core.server] AMQ222107:
> Cleared up resources for session ID:nixos-45797-1505221021784-1:1:1
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)