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>