From: Steven M. M. <ma...@bl...> - 2007-05-01 21:51:46
|
Hey Chuck, This might be the problem, although I've been using it for years and never had the deadlocking problem until recently. Here's the code: public void sleep() { if ( terminateOnSleep ) { try { session().terminate(); } catch ( Exception f ) { NSLog.out.appendln( "Error terminating session\n\n" + ErrorStackTrace.toString( f ) ); } } } The idea is that I have a very simple component that returns a short status message of some variety that can be used as a response for queries that instantiate recurring tasks. Since the recurring tasks are the kind of thing where a short, one-time action is performed (a queue of email is processed and sent, for instance), I don't want the overhead of an instantiated session hanging around after the request, so I have the component call terminate on session when it sleeps. Does this seem problematic for some reason? Thanks, Mark On May 1, 2007, at 5:39 PM, Chuck Hill wrote: > What in the name of all that's holy is that page doing in its sleep > () method? > > > > On May 1, 2007, at 1:20 PM, Steven Mark McCraw wrote: >> [9] com.webobjects.appserver.WOSession.terminate (WOSession.java: >> 560) >> [10] er.extensions.ERXSession.terminate (ERXSession.java:547) >> [11] JDBCSession.terminate (JDBCSession.java:55) >> [12] Ack.sleep (Ack.java:35) > >> >> On May 1, 2007, at 4:08 PM, Chuck Hill wrote: >> >>> That is an odd place to get a deadlock. What is the thread dump >>> of this thread and the one(s) that it is locked with? >>> >>> Chuck >>> >>> On May 1, 2007, at 1:05 PM, Steven Mark McCraw wrote: >>> >>>> Hi all, >>>> >>>> I'm using automatic locking in an application, and have it >>>> configured as follows: >>>> >>>> er.extensions.ERXApplication.useEditingContextUnlocker=true >>>> er.extensions.ERXEC.defaultAutomaticLockUnlock=true >>>> er.extensions.ERXEC.useSharedEditingContext=false >>>> er.extensions.ERXEC.defaultCoalesceAutoLocks=true >>>> >>>> I just started using it, and I've begun to get deadlocking in my >>>> application. I attached a debugger and took a thread dump, and >>>> it seems to be happening in the following block of code: >>>> >>>> if ( tracking != null && tracking.length() > 0 ) { >>>> EOEditingContext ec = ERXEC.newEditingContext(); >>>> NSTimestamp now = new NSTimestamp(); >>>> ec.lock(); >>>> try { >>>> EmailScheduler shippingNotice = (EmailScheduler) >>>> EOUtilities >>>> .createAndInsertInstance( ec, "EmailScheduler" ); >>>> -> shippingNotice.setEmailTypeParameter( "Customer >>>> Shipping Notification" ); >>>> shippingNotice.setSendDate( now ); >>>> shippingNotice.setTableName( "PackingSlip" ); >>>> shippingNotice.setUniqueIdentifier( result.getString >>>> ( "PACKING_SLIP_ID" ) ); >>>> ec.saveChanges(); >>>> } finally { >>>> ec.unlock(); >>>> } >>>> } >>>> >>>> The threads are waiting at "shippingNotice.setEmailTypeParameter >>>> ( "Customer Shipping Notification" );", which is the first time >>>> I alter the EO in the locked editing context. >>>> >>>> The manual locking and unlocking of the editing context is just >>>> code that I have had in for quite some time, but this piece of >>>> code just started to seem problematic after adding automatic >>>> locking from Project Wonder. So my question is, if I'm letting >>>> Wonder handle all of my locking/unlocking for me, configured as >>>> shown above, is it actually problematic to continue to lock/ >>>> unlock myself? Am I getting into some kind of race condition >>>> where both my code and Wonder's automatic locking capabilities >>>> are fighting for a lock on an editing context? Should I go >>>> through and remove all lock/unlock statements in my code now >>>> that I'm using Wonder's locking mechanism? Or is there some >>>> other issue here that I'm missing? >>>> >>>> Thanks in advance, >>>> Mark >>>> ------------------------------------------------------------------- >>>> ------ >>>> This SF.net email is sponsored by DB2 Express >>>> Download DB2 Express C - the FREE version of DB2 express and take >>>> control of your XML. No limits. Just data. Click to get it now. >>>> http://sourceforge.net/powerbar/db2/ >>>> _______________________________________________ >>>> Wonder-disc mailing list >>>> Won...@li... >>>> https://lists.sourceforge.net/lists/listinfo/wonder-disc >>> >>> -- >>> >>> Practical WebObjects - for developers who want to increase their >>> overall knowledge of WebObjects or who are trying to solve >>> specific problems. >>> http://www.global-village.net/products/practical_webobjects >>> >>> >>> >>> >>> >>> >> > > -- > > Practical WebObjects - for developers who want to increase their > overall knowledge of WebObjects or who are trying to solve specific > problems. > http://www.global-village.net/products/practical_webobjects > > > > > > |