• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
RE: Confusing lock error solved, but now a restoreSessionWithID lock issue
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Confusing lock error solved, but now a restoreSessionWithID lock issue


  • Subject: RE: Confusing lock error solved, but now a restoreSessionWithID lock issue
  • From: "Saad Laassel" <email@hidden>
  • Date: Fri, 7 Nov 2008 19:13:49 -0800
  • Thread-topic: Confusing lock error solved, but now a restoreSessionWithID lock issue

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@hidden]
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@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden


 _______________________________________________
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

  • Follow-Ups:
    • Re: Confusing lock error solved, but now a restoreSessionWithID lock issue
      • From: Guido Neitzer <email@hidden>
References: 
 >Re: Confusing lock error solved, but now a restoreSessionWithID lock issue (From: Saad Laassel <email@hidden>)
 >Re: Confusing lock error solved, but now a restoreSessionWithID lock issue (From: Guido Neitzer <email@hidden>)

  • Prev by Date: Re: IllegalStateException in _NSUtilities._explainInstantiationException(_NSUtilities.java:561)
  • Next by Date: Re: Formatting a BigDecimal in a WOString
  • Previous by thread: Re: Confusing lock error solved, but now a restoreSessionWithID lock issue
  • Next by thread: Re: Confusing lock error solved, but now a restoreSessionWithID lock issue
  • Index(es):
    • Date
    • Thread