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]

Reply via email to