[
https://issues.apache.org/activemq/browse/AMQ-2147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50794#action_50794
]
Gary Tully commented on AMQ-2147:
---------------------------------
{quote}1. why the delete temporary topic is blocked ?
As far as I can see , it's an internal communication inside the broker which
should release resources and therefore should not be blocked.
Does the flow control feature blocks an internal messages also?
{quote}
Yes.
{quote}2. what will happen if setting producerFlowControl="false" and what is
different from setting <systemUsage sendFailIfNoSpace="true">.{quote}
With flow controll false, a send on the broker will block waiting for space to
become availalbe, the client will experience a hang. All other users of the
connection will also be locked out awaiting a response from the broker.
with sendFail..., if there is no space, the broker will respond with an
exception that will be propagated back to the client so the client will see an
exception rather than a hang.
> deleteTempDestination hangs when MemoryUsage.waitForSpace () is blocked
> -----------------------------------------------------------------------
>
> Key: AMQ-2147
> URL: https://issues.apache.org/activemq/browse/AMQ-2147
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.1.0
> Environment: ActiveMQ 5.1embedded in Apache Tomcat 6.0.18
> environment, Java(TM) 2 Runtime Environment, Standard Edition (build
> 1.5.0_16-b02)
> , CentOS4.4
> Reporter: Yossi Shmulevitch
> Fix For: 5.3.0
>
>
> Delete temporary queue hangs:
> "pool-5-thread-2" prio=1 tid=0x65be6cc8 nid=0x73f5 waiting on condition
> [0x5a6fe000..0x5a6ff130]
> at sun.misc.Unsafe.park(Native Method)
> at java.util.concurrent.locks.LockSupport.park(Unknown Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown
> Source)
> at java.util.concurrent.ArrayBlockingQueue.take(Unknown Source)
> at
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> at
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
> at
> org.apache.activemq.ActiveMQConnection.deleteTempDestination(ActiveMQConnection.java:1791)
> at
> org.apache.activemq.command.ActiveMQTempDestination.delete(ActiveMQTempDestination.java:51)
> ....
> and createTemporaryTopic fails:
> "http-443-6" daemon prio=1 tid=0x098a2e88 nid=0x35ca waiting on condition
> [0x5dfcd000..0x5dfcdf30]
> at sun.misc.Unsafe.park(Native Method)
> at java.util.concurrent.locks.LockSupport.park(Unknown Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown
> Source)
> at java.util.concurrent.ArrayBlockingQueue.take(Unknown Source)
> at
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> at
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
> at
> org.apache.activemq.ActiveMQConnection.createTempDestination(ActiveMQConnection.java:1762)
> at
> org.apache.activemq.ActiveMQSession.createTemporaryTopic(ActiveMQSession.java:1232)
> When Memory Usage is blocked (100%):
> ActiveMQ Transport: ssl:///127.0.0.1:33469" daemon prio=1 tid=0x0ac5f5d0
> nid=0x3470 in Object.wait() [0x5e33d000..0x5e33e1b0]
> at java.lang.Object.wait(Native Method)
> at
> org.apache.activemq.usage.MemoryUsage.waitForSpace(MemoryUsage.java:85)
> - locked <0x7269f500> (a java.lang.Object)
> at
> org.apache.activemq.usage.MemoryUsage.waitForSpace(MemoryUsage.java:79)
> at org.apache.activemq.broker.region.Topic.send(Topic.java:341)
> at
> org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:345)
> at
> org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:445)
> at
> org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:224)
> at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:125)
> at
> org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
> at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:125)
> at
> org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:132)
> at
> org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:437)
> at
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:624)
> at
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
> at
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
> at
> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
> at
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
> at
> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
> - locked <0x7378cf58> (a
> org.apache.activemq.transport.InactivityMonitor$1)
> at
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
> at
> org.apache.activemq.transport.tcp.SslTransport.doConsume(SslTransport.java:104)
> at
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
> at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
> at java.lang.Thread.run(Unknown Source)
> These stack traces were taken from our web application
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.