One would think so looking at the stacktrace, but the only editing context being accessed as part of that thread is an editing context that was obtained trough a call to ERXEC.newEditingContext(), hence why I was asking if it was possible for two different calls to ERXEC.newEditingContext() to return the same editing context...
-----Original Message----- From: Guido Neitzer [mailto:[EMAIL PROTECTED] Sent: Fri 11/7/2008 4:52 PM To: WebObjects Development Cc: Saad Laassel Subject: Re: Confusing lock error solved, but now a restoreSessionWithID lock issue It rather looks like you're accessing the session's editing context from a different thread (long response or so): at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) cug On 07.11.2008, at 16:07, Saad Laassel wrote: > On Oct 9, 2008, at 10:36 AM, Mike Schrag wrote: >>> One reason why this can happen is an access to an autolocking, >>> coalescing ERXEC that is in that case the >>> session().defaultEditingContext() outside the request-response >>> loop. That means the unlocking code is not called (depends on the >>> request response loop). >>> >>> I thought Mike did something to prevent that from happening, but >>> I'm not totally sure. >> I didn't do anything on this one, though I've considered tracking >> the creation Thread reference in ERXEC and throwing an exception if >> it's used in any other Thread .... It's a bit draconian, though. >> >> ms > > > We are seeing the same type of error: > > Is it possible that a call to ERXEC.newEditingContext(); and a call > to the session's defaultEditingContext return the same exact editing > Context? > > this is the error we are seeing: > > 228054 [WorkerThread5] WARN er.extensions.eof.ERXEC - 15484314 > Attempting to lock editing context from WorkerThread5 that was > previously locked in Thread-8 > Current stack trace: java.lang.Exception: Locked > at er.extensions.eof.ERXEC.lock(ERXEC.java:448) > at > com.webobjects.appserver.WOSession._awakeInContext(WOSession.java:835) > at > com > .webobjects > .appserver.WOApplication.restoreSessionWithID(WOApplication.java:1917) > at > er > .extensions > .appserver.ERXApplication.restoreSessionWithID(ERXApplication.java: > 1948) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._dispatchWithPreparedApplication(WOComponentRequestHandler.java:324) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._handleRequest(WOComponentRequestHandler.java:369) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > .handleRequest(WOComponentRequestHandler.java:445) > at > com > .webobjects > .appserver.WOApplication.dispatchRequest(WOApplication.java:1687) > at > er > .extensions > .appserver > .ERXApplication.dispatchRequestImmediately(ERXApplication.java:1657) > at > er > .extensions > .appserver.ERXApplication.dispatchRequest(ERXApplication.java:1621) > at > com > .webobjects > .appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144) > at > com > .webobjects > .appserver._private.WOWorkerThread.run(WOWorkerThread.java:226) > at java.lang.Thread.run(Thread.java:613) > > Lock count: 1 > Existing lock: java.lang.Exception: Locked > at er.extensions.eof.ERXEC.lock(ERXEC.java:448) > at > com > .webobjects.eocontrol.EOEditingContext.tryLock(EOEditingContext.java: > 4632) > at > com > .webobjects > .eocontrol > .EOEditingContext._sendOrEnqueueNotification(EOEditingContext.java: > 4705) > at > com > .webobjects > .eocontrol.EOEditingContext._globalIDChanged(EOEditingContext.java: > 2038) > at sun.reflect.GeneratedMethodAccessor172.invoke(Unknown Source) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > com > .webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: > 122) > at com.webobjects.foundation.NSNotificationCenter > $_Entry.invokeMethod(NSNotificationCenter.java:588) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:532) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:562) > at > com > .webobjects > .eocontrol > .EOObjectStoreCoordinator > ._globalIDsChangedInSubStore(EOObjectStoreCoordinator.java:698) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun > .reflect > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > com > .webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: > 122) > at com.webobjects.foundation.NSNotificationCenter > $_Entry.invokeMethod(NSNotificationCenter.java:588) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:532) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:562) > at > com > .webobjects > .eoaccess.EODatabaseContext.commitChanges(EODatabaseContext.java:6377) > at > com > .webobjects > .eocontrol > .EOObjectStoreCoordinator > .saveChangesInEditingContext(EOObjectStoreCoordinator.java:386) > at > com > .webobjects > .eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192) > at er.extensions.eof.ERXEC._saveChanges(ERXEC.java:981) > at er.extensions.eof.ERXEC.saveChanges(ERXEC.java:903) > at > com > .devtest > .services > .tasks > .ContentChangeTaskWrapper > .createAndSaveChanges(ContentChangeTaskWrapper.java:70) > at > com > .devtest > .services.tasks.TaskFactory.generateTaskForType(TaskFactory.java:42) > at > com > .devtest > .services > .tasks > .TaskNotificationCenter > .handleNotification(TaskNotificationCenter.java:70) > at > com > .devtest > .services > .tasks.TaskNotificationCenter.run(TaskNotificationCenter.java:79) > at EDU.oswego.cs.dl.util.concurrent.PooledExecutor > $Worker.run(Unknown Source) > at java.lang.Thread.run(Thread.java:613) > Created: java.lang.Exception: Creation > at er.extensions.eof.ERXEC.<init>(ERXEC.java:353) > at er.extensions.eof.ERXEC > $DefaultFactory._createEditingContext(ERXEC.java:1492) > at er.extensions.eof.ERXEC > $DefaultFactory._newEditingContext(ERXEC.java:1455) > at er.extensions.eof.ERXObjectStoreCoordinatorPool > $ > MultiOSCFactory > ._newEditingContext(ERXObjectStoreCoordinatorPool.java:210) > at er.extensions.eof.ERXObjectStoreCoordinatorPool > $ > MultiOSCFactory > ._newEditingContext(ERXObjectStoreCoordinatorPool.java:205) > at er.extensions.eof.ERXEC.newEditingContext(ERXEC.java:1540) > at > er > .extensions > .appserver.ERXSession.defaultEditingContext(ERXSession.java:352) > at > com > .devtest.services.application.CVSession.initSession(CVSession.java: > 173) > at com.devtest.admin.Main.initSession(Main.java:263) > at com.devtest.admin.Main.checkChain(Main.java:91) > at com.devtest.admin.Main.<init>(Main.java:59) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun > .reflect > .NativeConstructorAccessorImpl > .newInstance(NativeConstructorAccessorImpl.java:39) > at > sun > .reflect > .DelegatingConstructorAccessorImpl > .newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:494) > at > com > .webobjects > .foundation._NSUtilities.instantiateObject(_NSUtilities.java:614) > at > com > .webobjects > .appserver > ._private > .WOComponentDefinition > ._componentInstanceInContext(WOComponentDefinition.java:567) > at > com > .webobjects > .appserver > ._private > .WOComponentDefinition > .componentInstanceInContext(WOComponentDefinition.java:658) > at > com > .webobjects.appserver.WOApplication.pageWithName(WOApplication.java: > 2332) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._dispatchWithPreparedSession(WOComponentRequestHandler.java:284) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._dispatchWithPreparedApplication(WOComponentRequestHandler.java:332) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._handleRequest(WOComponentRequestHandler.java:369) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > .handleRequest(WOComponentRequestHandler.java:445) > at > com > .webobjects > .appserver.WOApplication.dispatchRequest(WOApplication.java:1687) > at > er > .extensions > .appserver > .ERXApplication.dispatchRequestImmediately(ERXApplication.java:1657) > at > er > .extensions > .appserver.ERXApplication.dispatchRequest(ERXApplication.java:1621) > at > com > .webobjects > .appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144) > at > com > .webobjects > .appserver._private.WOWorkerThread.run(WOWorkerThread.java:226) > > > "Thread-8" prio=5 tid=0x01076950 nid=0xa6f200 waiting on condition > [0xf28c0000..0xf28c2bb0] > at sun.misc.Unsafe.park(Native Method) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer > .parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:716) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer > .acquireQueued(AbstractQueuedSynchronizer.java:746) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java: > 1076) > at java.util.concurrent.locks.ReentrantReadWriteLock > $NonfairSync.wlock(ReentrantReadWriteLock.java:342) > at java.util.concurrent.locks.ReentrantReadWriteLock > $WriteLock.lock(ReentrantReadWriteLock.java:637) > at > com > .webobjects > .eocontrol.EOSharedEditingContext.lock(EOSharedEditingContext.java: > 736) > at > com > .webobjects > .eocontrol.EOEditingContext.lockObjectStore(EOEditingContext.java: > 4664) > at > com > .webobjects > .eocontrol.EOEditingContext.refaultObject(EOEditingContext.java:4000) > at er.extensions.eof.ERXEC.refaultObject(ERXEC.java:1098) > at > com > .webobjects > .eocontrol > .EOEditingContext._refaultObjectWithGlobalID(EOEditingContext.java: > 3259) > at > com > .webobjects > .eocontrol > .EOEditingContext > ._newChangesFromInvalidatingObjectsWithGlobalIDs > (EOEditingContext.java:3485) > at > com > .webobjects > .eocontrol > .EOEditingContext._processObjectStoreChanges(EOEditingContext.java: > 3522) > at sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at com.webobjects.foundation.NSSelector.invoke(NSSelector.java:358) > at > com > .webobjects > .foundation.NSSelector._safeInvokeSelector(NSSelector.java:110) > at > com > .webobjects > .eocontrol > .EOEditingContext._processNotificationQueue(EOEditingContext.java: > 4741) > at > com.webobjects.eocontrol.EOEditingContext.lock(EOEditingContext.java: > 4620) > at er.extensions.eof.ERXEC.lock(ERXEC.java:480) > at > com > .webobjects.eocontrol.EOEditingContext.tryLock(EOEditingContext.java: > 4632) > at > com > .webobjects > .eocontrol > .EOEditingContext._sendOrEnqueueNotification(EOEditingContext.java: > 4705) > at > com > .webobjects > .eocontrol.EOEditingContext._globalIDChanged(EOEditingContext.java: > 2038) > at sun.reflect.GeneratedMethodAccessor172.invoke(Unknown Source) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > com > .webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: > 122) > at com.webobjects.foundation.NSNotificationCenter > $_Entry.invokeMethod(NSNotificationCenter.java:588) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:532) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:562) > at > com > .webobjects > .eocontrol > .EOObjectStoreCoordinator > ._globalIDsChangedInSubStore(EOObjectStoreCoordinator.java:698) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun > .reflect > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > com > .webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: > 122) > at com.webobjects.foundation.NSNotificationCenter > $_Entry.invokeMethod(NSNotificationCenter.java:588) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:532) > at > com > .webobjects > .foundation > .NSNotificationCenter.postNotification(NSNotificationCenter.java:562) > at > com > .webobjects > .eoaccess.EODatabaseContext.commitChanges(EODatabaseContext.java:6377) > at > com > .webobjects > .eocontrol > .EOObjectStoreCoordinator > .saveChangesInEditingContext(EOObjectStoreCoordinator.java:386) > at > com > .webobjects > .eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192) > at er.extensions.eof.ERXEC._saveChanges(ERXEC.java:981) > at er.extensions.eof.ERXEC.saveChanges(ERXEC.java:903) > at > com > .devtest > .services > .tasks > .ContentChangeTaskWrapper > .createAndSaveChanges(ContentChangeTaskWrapper.java:70) > at > com > .devtest > .services.tasks.TaskFactory.generateTaskForType(TaskFactory.java:42) > at > com > .devtest > .services > .tasks > .TaskNotificationCenter > .handleNotification(TaskNotificationCenter.java:70) > at > com > .devtest > .services > .tasks.TaskNotificationCenter.run(TaskNotificationCenter.java:79) > at EDU.oswego.cs.dl.util.concurrent.PooledExecutor > $Worker.run(Unknown Source) > at java.lang.Thread.run(Thread.java:613) > > > "WorkerThread5" prio=5 tid=0x0104a500 nid=0xa5d200 waiting on > condition [0xf1eae000..0xf1eaebb0] > at sun.misc.Unsafe.park(Native Method) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer > .parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:716) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer > .acquireQueued(AbstractQueuedSynchronizer.java:746) > at > java > .util > .concurrent > .locks > .AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java: > 1076) > at java.util.concurrent.locks.ReentrantLock > $NonfairSync.lock(ReentrantLock.java:184) > at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java: > 256) > at > com.webobjects.eocontrol.EOEditingContext.lock(EOEditingContext.java: > 4617) > at er.extensions.eof.ERXEC.lock(ERXEC.java:480) > at > com.webobjects.appserver.WOSession._awakeInContext(WOSession.java:835) > at > com > .webobjects > .appserver.WOApplication.restoreSessionWithID(WOApplication.java:1917) > at > er > .extensions > .appserver.ERXApplication.restoreSessionWithID(ERXApplication.java: > 1948) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._dispatchWithPreparedApplication(WOComponentRequestHandler.java:324) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > ._handleRequest(WOComponentRequestHandler.java:369) > at > com > .webobjects > .appserver > ._private > .WOComponentRequestHandler > .handleRequest(WOComponentRequestHandler.java:445) > at > com > .webobjects > .appserver.WOApplication.dispatchRequest(WOApplication.java:1687) > at > er > .extensions > .appserver > .ERXApplication.dispatchRequestImmediately(ERXApplication.java:1657) > at > er > .extensions > .appserver.ERXApplication.dispatchRequest(ERXApplication.java:1621) > at > com > .webobjects > .appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144) > at > com > .webobjects > .appserver._private.WOWorkerThread.run(WOWorkerThread.java:226) > at java.lang.Thread.run(Thread.java:613) > > Thanks, > > Saad > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list ([email protected]) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/guido.neitzer%40gmail.com > > This email sent to [EMAIL PROTECTED] _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
