Re: Need help with a (non) deadlock Issue
Re: Need help with a (non) deadlock Issue
- Subject: Re: Need help with a (non) deadlock Issue
- From: Dov Rosenberg <email@hidden>
- Date: Thu, 9 Dec 2010 05:08:11 -0800
- Acceptlanguage: en-US
- Thread-topic: Need help with a (non) deadlock Issue
We tried that approach as well with little success. Just pass in the identifier you need and don’t try to pass EOs across thread boundaries. Refetch the EO inside the thread and everything will be a lot happier
Dov Rosenberg
On 12/8/10 10:33 PM, "Greg Lappen" <email@hidden> wrote:
Hi Dov,
Thanks for the input. I did find one quartz job that I'm passing EOs into. But inside the quartz job I create a new editing contenxt use editingContext.faultForGlobalID to bring those objects into the local editing context, and then I dispose that editingContext in a finally block. Is disposing editingContexts what you mean by cleaning up after myself, or is there more to it?
On Wed, Dec 8, 2010 at 11:45 AM, Dov Rosenberg <email@hidden> wrote:
My guess is that you passed some EOs into your quartz scheduler that is running in a separate thread. That is a good way to shoot yourself in the foot. Just pass in identifiers to your thread and refetch them in the scope of the thread and clean up after your self inside the thread.
Dov Rosenberg
On 12/8/10 11:27 AM, "Greg Lappen" <email@hidden> wrote:
Hi everyone, was wondering if anyone was up for a game of "spot the deadlock" today. I have a thread dump which I have removed duplicates from and cleaned up a bit. It seems that a lot of threads are BLOCKED waiting on the EOObjectStoreCoordinator.lock() call
Deadlock Detection:
No deadlocks found.
Thread t@44035: (state = BLOCKED)
- java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
- sun.security.pkcs11.SunPKCS11$TokenPoller.run() @bci=20, line=692 (Compiled frame)
- java.lang.Thread.run() @bci=11, line=680 (Interpreted frame)
Thread t@44291: (state = BLOCKED)
- java.net.PlainSocketImpl.accept(java.net.SocketImpl) @bci=0, line=388 (Interpreted frame)
- java.net.ServerSocket.implAccept(java.net.Socket) @bci=60, line=453 (Interpreted frame)
- java.net.ServerSocket.accept() @bci=48, line=421 (Interpreted frame)
- com.webobjects.appserver._private.WOWorkerThread.run() @bci=26, line=210 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=680 (Interpreted frame)
Thread t@46083: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=158 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=811 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int) @bci=48, line=842 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(int) @bci=17, line=1178 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock$NonfairSync.lock() @bci=21, line=186 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock.lock() @bci=4, line=262 (Compiled frame)
- com.webobjects.eocontrol.EOObjectStoreCoordinator.lock() @bci=4, line=420 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.lockObjectStore() @bci=41, line=4666 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification, com.webobjects.eocontrol.EOEditingContext) @bci=70, line=4067 (Interpreted frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification) @bci=3, line=4444 (Interpreted frame)
- com.webobjects.eoaccess.EOUtilities.objectWithPrimaryKey(com.webobjects.eocontrol.EOEditingContext, java.lang.String, com.webobjects.foundation.NSDictionary) @bci=34, line=461 (Interpreted frame)
- com.webobjects.eoaccess.EOUtilities.objectWithPrimaryKeyValue(com.webobjects.eocontrol.EOEditingContext, java.lang.String, java.lang.Object) @bci=10, line=432 (Interpreted frame)
- net.paperfree.lightbeam.DocumentEmailAction.deliverDocumentAction() @bci=211, line=59 (Interpreted frame)
Thread t@46595: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=158 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=811 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int) @bci=48, line=842 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(int) @bci=17, line=1178 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock$NonfairSync.lock() @bci=21, line=186 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock.lock() @bci=4, line=262 (Compiled frame)
- com.webobjects.eocontrol.EOObjectStoreCoordinator.lock() @bci=4, line=420 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.lockObjectStore() @bci=41, line=4666 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification, com.webobjects.eocontrol.EOEditingContext) @bci=70, line=4067 (Interpreted frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification) @bci=3, line=4444 (Interpreted
frame)
- net.paperfree.lightbeam.LBEntityHelper.getTimezones() @bci=20, line=135 (Interpreted frame)
- net.paperfree.lightbeam.components.LoginPage.timeZones() @bci=4, line=120 (Interpreted frame)
Thread t@48387: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- org.quartz.simpl.SimpleThreadPool.runInThread(java.lang.Runnable) @bci=58, line=384 (Compiled frame)
- org.quartz.core.QuartzSchedulerThread.run() @bci=665, line=369 (Compiled frame)
Thread t@48643: (state = BLOCKED)
- net.paperfree.lightbeam.MessageDeliveryJob.execute(org.quartz.JobExecutionContext) @bci=5, line=20 (Interpreted frame)
- org.quartz.core.JobRunShell.run() @bci=201, line=203 (Interpreted frame)
- org.quartz.simpl.SimpleThreadPool$WorkerThread.run() @bci=49, line=520 (Compiled frame)
Thread t@50947: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=158 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=811 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int) @bci=48, line=842 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(int) @bci=17, line=1178 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock$NonfairSync.lock() @bci=21, line=186 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock.lock() @bci=4, line=262 (Compiled frame)
- com.webobjects.eocontrol.EOObjectStoreCoordinator.lock() @bci=4, line=420 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.lockObjectStore() @bci=41, line=4666 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification, com.webobjects.eocontrol.EOEditingContext) @bci=70, line=4067 (Interpreted frame)
- com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification) @bci=3, line=4444 (Interpreted frame)
- net.paperfree.lightbeam.MessageDeliveryJob.execute(org.quartz.JobExecutionContext) @bci=42, line=25 (Interpreted frame)
- org.quartz.core.JobRunShell.run() @bci=201, line=203 (Interpreted frame)
- org.quartz.simpl.SimpleThreadPool$WorkerThread.run() @bci=49, line=520 (Compiled frame)
Thread t@51203: (state = BLOCKED)
- java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
- org.apache.log4j.helpers.FileWatchdog.run() @bci=11, line=103 (Compiled frame)
Thread t@51459: (state = BLOCKED)
- java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
- com.webobjects.appserver.WOApplication$_LifebeatThread.run() @bci=233, line=1619 (Compiled frame)
Thread t@51715: (state = BLOCKED)
- java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
- com.webobjects.appserver.WOSessionStore$_SessionTimeoutManager.run() @bci=12, line=98 (Compiled frame)
- java.lang.Thread.run() @bci=11, line=680 (Interpreted frame)
Thread t@51971: (state = BLOCKED)
Thread t@52227: (state = BLOCKED)
Thread t@52483: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=158 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=811 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int) @bci=48, line=842 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(int) @bci=17, line=1178 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock$NonfairSync.lock() @bci=21, line=186 (Compiled frame)
- java.util.concurrent.locks.ReentrantLock.lock() @bci=4, line=262 (Compiled frame)
- com.webobjects.eocontrol.EOObjectStoreCoordinator.lock() @bci=4, line=420 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.lockObjectStore() @bci=41, line=4666 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext._dispose(boolean) @bci=181, line=1172 (Compiled frame)
- com.webobjects.eocontrol.EOEditingContext.finalize() @bci=9, line=1239 (Interpreted frame)
- java.lang.ref.Finalizer.invokeFinalizeMethod(java.lang.Object) @bci=0 (Compiled frame)
- java.lang.ref.Finalizer.runFinalizer() @bci=45, line=83 (Compiled frame)
- java.lang.ref.Finalizer.access$100(java.lang.ref.Finalizer) @bci=1, line=14 (Compiled frame)
- java.lang.ref.Finalizer$FinalizerThread.run() @bci=11, line=160 (Compiled frame)
Thread t@52739: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- java.lang.Object.wait() @bci=2, line=485 (Compiled frame)
- java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Compiled frame)
Thread t@52995: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- com.webobjects.appserver._WORunLoop._acceptInputBeforeDate(com.webobjects.foundation.NSTimestamp) @bci=98, line=244 (Interpreted frame)
- com.webobjects.appserver._WORunLoop.runBeforeDate(com.webobjects.foundation.NSTimestamp) @bci=39, line=95 (Interpreted frame)
- com.webobjects.appserver.WOApplication._runOnce() @bci=17, line=1095 (Interpreted frame)
- com.webobjects.appserver.WOApplication.run() @bci=106, line=1248 (Interpreted frame)
- com.webobjects.appserver.WOApplication.main(java.lang.String[], java.lang.Class) @bci=55, line=548 (Interpreted frame)
- net.paperfree.lightbeam.Application.main(java.lang.String[]) @bci=3, line=68 (Interpreted frame)
- sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) @bci=0 (Interpreted frame)
- sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=87, line=39 (Interpreted frame)
- sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=6, line=25 (Interpreted frame)
- java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) @bci=161, line=597 (Interpreted frame)
- com.webobjects._bootstrap.WOBootstrap.main(java.lang.String[]) @bci=118, line=87 (Interpreted frame)
Any help with this would be greatly appreciated.
Greg
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden