You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Jim Alateras <ji...@comware.com.au> on 2007/09/12 00:27:51 UTC
deadlock while publishing a message.
I am using activemq 5.0-SNAPSHOT with a current project and have just
come across a situation where a thread blocks indefinitely trying to
publish a message. It happens during the session commit
The method ActiveMQDispatcherClient.dispatch is synchronized.
Here is the stack trace.
Thread [pool-5-thread-1] (Suspended)
Unsafe.park(boolean, long) line: not available [native method]
LockSupport.park() line: 118
AbstractQueuedSynchronizer$ConditionObject.await() line: 1767
ArrayBlockingQueue<E>.take() line: 341
FutureResponse.getResult() line: 40
ResponseCorrelator.request(Object) line: 76
ActiveMQConnection.syncSendPacket(Command) line: 1168
TransactionContext.commit() line: 259
ActiveMQSession.commit() line: 491
DefaultEnqueueStrategy<T>.dispatch(Session, MessageProducer,
DispatcherQueue, List<T>) line: 83
ActiveMQDispatcherClient.dispatch(List<T>) line: 195
Hub.dispatchObservations(List<DeviceFieldObservation>) line: 1004
ZoneFacadeImpl.observationsMade(List) line: 785
DeviceFieldObservationVendorImpl.vendObservations(List) line: 183
DeviceFieldObservationVendorImpl$StatusEventHandler.notifyEvent(DeviceEvent)
line: 687
EventManager$EventDeliverer.run() line: 174
Executors$RunnableAdapter.call() line: 442
ScheduledThreadPoolExecutor$ScheduledFutureTask(FutureTask).run()
line: 176
ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask)
line: 102
ScheduledThreadPoolExecutor$ScheduledFutureTask.run() line: 215
ThreadPoolExecutor$Worker.runTask(Runnable) line: 665
ThreadPoolExecutor$Worker.run() line: 690
Thread.run() line: 613
cheers
</jima>
Re: deadlock while publishing a message.
Posted by Rob Davies <ra...@gmail.com>.
yes - async is true could help - as its embedded - I'd be interested
in the stack trace of all the threads - so we can work out why this
is happening
cheers,
Rob
http://rajdavies.blogspot.com/
On Sep 12, 2007, at 7:25 AM, Jim Alateras wrote:
> Rob,
> Using the embedded broker but couldn't locate the thread holding
> the lock. The problem is that it is blocking the client thread. If
> i use something like async=true then will the delivery happen in a
> separate thread?
>
> cheers
> </jima>
> Rob Davies wrote:
>> the client is waiting for a response from the broker - what's the
>> broker doing whilst you are doing this ?
>> cheers,
>> Rob
>> 'Go Get Integrated - ride the Camel! - http://activemq.apache.org/
>> camel/'
>> http://rajdavies.blogspot.com/
>> On Sep 11, 2007, at 11:27 PM, Jim Alateras wrote:
>>> I am using activemq 5.0-SNAPSHOT with a current project and have
>>> just come across a situation where a thread blocks indefinitely
>>> trying to publish a message. It happens during the session commit
>>>
>>> The method ActiveMQDispatcherClient.dispatch is synchronized.
>>>
>>> Here is the stack trace.
>>>
>>> Thread [pool-5-thread-1] (Suspended) Unsafe.park(boolean,
>>> long) line: not available [native method] LockSupport.park
>>> () line: 118 AbstractQueuedSynchronizer
>>> $ConditionObject.await() line: 1767
>>> ArrayBlockingQueue<E>.take() line: 341
>>> FutureResponse.getResult() line: 40
>>> ResponseCorrelator.request(Object) line: 76
>>> ActiveMQConnection.syncSendPacket(Command) line: 1168
>>> TransactionContext.commit() line: 259 ActiveMQSession.commit
>>> () line: 491 DefaultEnqueueStrategy<T>.dispatch(Session,
>>> MessageProducer, DispatcherQueue, List<T>) line: 83
>>> ActiveMQDispatcherClient.dispatch(List<T>) line: 195
>>> Hub.dispatchObservations(List<DeviceFieldObservation>) line:
>>> 1004 ZoneFacadeImpl.observationsMade(List) line: 785
>>> DeviceFieldObservationVendorImpl.vendObservations(List) line:
>>> 183 DeviceFieldObservationVendorImpl
>>> $StatusEventHandler.notifyEvent(DeviceEvent) line: 687
>>> EventManager$EventDeliverer.run() line: 174 Executors
>>> $RunnableAdapter.call() line: 442
>>> ScheduledThreadPoolExecutor$ScheduledFutureTask(FutureTask).run()
>>> line: 176 ScheduledThreadPoolExecutor
>>> $ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor
>>> $ScheduledFutureTask) line: 102 ScheduledThreadPoolExecutor
>>> $ScheduledFutureTask.run() line: 215 ThreadPoolExecutor
>>> $Worker.runTask(Runnable) line: 665 ThreadPoolExecutor
>>> $Worker.run() line: 690 Thread.run() line: 613
>>>
>>> cheers
>>> </jima>
>
Re: deadlock while publishing a message.
Posted by Jim Alateras <ji...@comware.com.au>.
Rob,
Using the embedded broker but couldn't locate the thread holding the
lock. The problem is that it is blocking the client thread. If i use
something like async=true then will the delivery happen in a separate
thread?
cheers
</jima>
Rob Davies wrote:
> the client is waiting for a response from the broker - what's the broker
> doing whilst you are doing this ?
>
> cheers,
>
> Rob
>
> 'Go Get Integrated - ride the Camel! - http://activemq.apache.org/camel/'
> http://rajdavies.blogspot.com/
>
>
>
> On Sep 11, 2007, at 11:27 PM, Jim Alateras wrote:
>
>> I am using activemq 5.0-SNAPSHOT with a current project and have just
>> come across a situation where a thread blocks indefinitely trying to
>> publish a message. It happens during the session commit
>>
>> The method ActiveMQDispatcherClient.dispatch is synchronized.
>>
>> Here is the stack trace.
>>
>> Thread [pool-5-thread-1] (Suspended)
>> Unsafe.park(boolean, long) line: not available [native method]
>> LockSupport.park() line: 118
>> AbstractQueuedSynchronizer$ConditionObject.await() line: 1767
>> ArrayBlockingQueue<E>.take() line: 341
>> FutureResponse.getResult() line: 40
>> ResponseCorrelator.request(Object) line: 76
>> ActiveMQConnection.syncSendPacket(Command) line: 1168
>> TransactionContext.commit() line: 259
>> ActiveMQSession.commit() line: 491
>> DefaultEnqueueStrategy<T>.dispatch(Session, MessageProducer,
>> DispatcherQueue, List<T>) line: 83
>> ActiveMQDispatcherClient.dispatch(List<T>) line: 195
>> Hub.dispatchObservations(List<DeviceFieldObservation>) line: 1004
>> ZoneFacadeImpl.observationsMade(List) line: 785
>> DeviceFieldObservationVendorImpl.vendObservations(List) line: 183
>> DeviceFieldObservationVendorImpl$StatusEventHandler.notifyEvent(DeviceEvent)
>> line: 687
>> EventManager$EventDeliverer.run() line: 174
>> Executors$RunnableAdapter.call() line: 442
>> ScheduledThreadPoolExecutor$ScheduledFutureTask(FutureTask).run()
>> line: 176
>> ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask)
>> line: 102
>> ScheduledThreadPoolExecutor$ScheduledFutureTask.run() line: 215
>> ThreadPoolExecutor$Worker.runTask(Runnable) line: 665
>> ThreadPoolExecutor$Worker.run() line: 690
>> Thread.run() line: 613
>>
>>
>> cheers
>> </jima>
>
>
Re: deadlock while publishing a message.
Posted by Rob Davies <ra...@gmail.com>.
the client is waiting for a response from the broker - what's the
broker doing whilst you are doing this ?
cheers,
Rob
'Go Get Integrated - ride the Camel! - http://activemq.apache.org/
camel/'
http://rajdavies.blogspot.com/
On Sep 11, 2007, at 11:27 PM, Jim Alateras wrote:
> I am using activemq 5.0-SNAPSHOT with a current project and have
> just come across a situation where a thread blocks indefinitely
> trying to publish a message. It happens during the session commit
>
> The method ActiveMQDispatcherClient.dispatch is synchronized.
>
> Here is the stack trace.
>
> Thread [pool-5-thread-1] (Suspended)
> Unsafe.park(boolean, long) line: not available [native method]
> LockSupport.park() line: 118
> AbstractQueuedSynchronizer$ConditionObject.await() line: 1767
> ArrayBlockingQueue<E>.take() line: 341
> FutureResponse.getResult() line: 40
> ResponseCorrelator.request(Object) line: 76
> ActiveMQConnection.syncSendPacket(Command) line: 1168
> TransactionContext.commit() line: 259
> ActiveMQSession.commit() line: 491
> DefaultEnqueueStrategy<T>.dispatch(Session, MessageProducer,
> DispatcherQueue, List<T>) line: 83
> ActiveMQDispatcherClient.dispatch(List<T>) line: 195
> Hub.dispatchObservations(List<DeviceFieldObservation>) line: 1004
> ZoneFacadeImpl.observationsMade(List) line: 785
> DeviceFieldObservationVendorImpl.vendObservations(List) line: 183
> DeviceFieldObservationVendorImpl$StatusEventHandler.notifyEvent
> (DeviceEvent) line: 687
> EventManager$EventDeliverer.run() line: 174
> Executors$RunnableAdapter.call() line: 442
> ScheduledThreadPoolExecutor$ScheduledFutureTask(FutureTask).run()
> line: 176
> ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301
> (ScheduledThreadPoolExecutor$ScheduledFutureTask) line: 102
> ScheduledThreadPoolExecutor$ScheduledFutureTask.run() line: 215
> ThreadPoolExecutor$Worker.runTask(Runnable) line: 665
> ThreadPoolExecutor$Worker.run() line: 690
> Thread.run() line: 613
>
>
> cheers
> </jima>