FYI, I did a brief test of using WO 5.4.3 on a mature app a week or two ago, 
and running a barrage of Selenium tests (where each test generally created a 
new Session with a specific user on a specific page with a master EO) would 
deadlock some of the Sessions' defaultERXEC's every time. Switching back to WO 
5.3.3 made the problem go away ... and yes, I built Wonder with the 54 patch 
too.... so that quickly killed my confidence in WO 5.4.3. Even though I am 99% 
sure that this is probably compatability between my code, Wonder and WO 5.4.3, 
I could not find the problem after 2 hours, so I had to park it, revert to WO 
5.3.3 and get priority work done.

-Kieran

On Jun 2, 2010, at 10:52 AM, Pascal Robert wrote:

> 
> Le 10-06-02 à 10:35, Mike Schrag a écrit :
> 
>> doesn't addCooperatingObjectStore have a race condition in <=5.4? i don't 
>> recall if wonder fixed that or not ...
> 
> I guess we could try with WO 5.4.3, but about Wonder, the app is extending 
> from ERXApplication/ERXSession. Wonder download from two months ago.
> 
>> On Jun 2, 2010, at 8:19 AM, Pascal Robert wrote:
>> 
>>> ... And going back to the physical server didn't solve anything, I got the 
>>> same deadlock this morning.
>>> 
>>>> Ok, so I will move back the DB to the physical server to see if the 
>>>> problem goes away.
>>>> 
>>>>> 
>>>>> On Jun 1, 2010, at 6:34 AM, Pascal Robert wrote:
>>>>> 
>>>>>> Hum... And after I started using ERXWOLongResponsePage, I still got a 
>>>>>> deadlock, but this time, it says that it's a EODatabaseContext lock :
>>>>>> 
>>>>>> Thread t...@92163: (state = BLOCKED)
>>>>>> - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
>>>>>> - java.lang.Object.wait() @bci=2, line=474 (Interpreted frame)
>>>>>> - com.webobjects.foundation.NSRecursiveLock.lock() @bci=54, line=72 
>>>>>> (Interpreted frame)
>>>>>> - com.webobjects.eoaccess.EODatabaseContext.lock() @bci=56, line=1973 
>>>>>> (Interpreted frame)
>>>>>> - 
>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.addCooperatingObjectStore(com.webobjects.eocontrol.EOCooperatingObjectStore)
>>>>>>  @bci=5, line=130 (Interpreted frame)
>>>>>> - 
>>>>>> com.webobjects.eoaccess.EODatabaseChannel.setCurrentEditingContext(com.webobjects.eocontrol.EOEditingContext)
>>>>>>  @bci=34, line=166 (Interpreted frame)
>>>>>> ...
>>>>>> 
>>>>>> We don't "manual" (eg , in code) locking at the EODatabaseContext level.
>>>>> 
>>>>> It is possible that an odd exception in EOAccess or below is resulting in 
>>>>> this not getting unlocked.  Joe's reply below might be what is happening 
>>>>> to you.
>>>>> 
>>>>> Chuck
>>>>> 
>>>>> 
>>>>>> Another thing to note if this is a long request to a database housed in 
>>>>>> an ESX vm. We had similar problems with long requests timing out between 
>>>>>> two systems, with one hosted by esx 4.x. Such long requests were caught 
>>>>>> by some low level interface muxing issue and my whole EOF stack was 
>>>>>> frozen when the underlying db connection was lost mid-transaction. I 
>>>>>> resolved it by moving this application off of a vm.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On May 31, 2010, at 5:33 PM, Pascal Robert <prob...@macti.ca> wrote:
>>>>>>> 
>>>>>>>> Ok, will try with ERXWOLongResponsePage since it look like it's 
>>>>>>>> locking and unlocking all ECs in the thread.
>>>>>>>> 
>>>>>>>>> There's a bunch of stuff wrong here. First, the only actually locked 
>>>>>>>>> thread is:
>>>>>>>>> 
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.addCooperatingObjectStore(com.webobjects.eocontrol.EOCooperatingObjectStore)
>>>>>>>>>  @bci=5, line=130 (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eoaccess.EODatabaseChannel.setCurrentEditingContext(com.webobjects.eocontrol.EOEditingContext)
>>>>>>>>>  @bci=34, line=166 (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=158, line=788 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=64, line=215 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=219, line=3205 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=34, line=3346 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=97, line=539 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=79, line=4114 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> er.extensions.eof.ERXEC.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification,
>>>>>>>>>  com.webobjects.eocontrol.EOEditingContext) @bci=72, line=1211 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(com.webobjects.eocontrol.EOFetchSpecification)
>>>>>>>>>  @bci=3, line=4500 (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.acaiq.fondation.acaiqCore._Licence.fetchLicences(com.webobjects.eocontrol.EOEditingContext,
>>>>>>>>>  com.webobjects.eocontrol.EOQualifier, 
>>>>>>>>> com.webobjects.foundation.NSArray) @bci=19, line=1062 (Interpreted 
>>>>>>>>> frame)
>>>>>>>>> - 
>>>>>>>>> com.acaiq.fondation.acaiqCore._Membre.licences(com.webobjects.eocontrol.EOQualifier,
>>>>>>>>>  com.webobjects.foundation.NSArray, boolean) @bci=77, line=8920 
>>>>>>>>> (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.acaiq.fondation.acaiqCore._Membre.licences(com.webobjects.eocontrol.EOQualifier,
>>>>>>>>>  boolean) @bci=4, line=8893 (Interpreted frame)
>>>>>>>>> - 
>>>>>>>>> com.acaiq.fondation.acaiqCore.Membre.licencesParEtats(com.acaiq.fondation.acaiqCore.EtatMembre[])
>>>>>>>>>  @bci=100, line=980 (Interpreted frame)
>>>>>>>>> - com.acaiq.fondation.acaiqCore.Membre.licencesValides() @bci=11, 
>>>>>>>>> line=996 (Interpreted frame)
>>>>>>>>> - com.acaiq.fondation.acaiqCore.Membre.estCourtier() @bci=5, 
>>>>>>>>> line=1035 (Interpreted frame)
>>>>>>>>> - sun.reflect.GeneratedMethodAccessor87.invoke(java.lang.Object, 
>>>>>>>>> java.lang.Object[]) @bci=40 (Interpreted frame)
>>>>>>>>> 
>>>>>>>>> Which reminds me of an unlocked EC/OSC. Second:
>>>>>>>>> 
>>>>>>>>>> java.lang.IllegalArgumentException: Attribute noCommandeOracle can't 
>>>>>>>>>> receive a null parameter :
>>>>>>>>>>      at 
>>>>>>>>>> com.acaiq.fondation.depot.lbaArticle._CommandesEcom.setNoCommandeOracle(_CommandesEcom.java:419)
>>>>>>>>> 
>>>>>>>>> This is a *template* that throws on null?? You sure that's such a 
>>>>>>>>> bright idea? Isn't this what validation is for? And third:
>>>>>>>>> 
>>>>>>>>>>      at 
>>>>>>>>>> com.acaiq.depot.component.TransactionAchat.performAction(TransactionAchat.java:63)
>>>>>>>>>>      at 
>>>>>>>>>> com.webobjects.woextensions.WOLongResponsePage.run(WOLongResponsePage.java:119)
>>>>>>>>> 
>>>>>>>>> As you're throwing from inside a normal 
>>>>>>>>> com.webobjects.woextensions.WOLongResponsePage, I seriously hope 
>>>>>>>>> you're doing your part of try{} finally{} and EC unlocking.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Cheers, Anjo
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Am 31.05.2010 um 20:02 schrieb Pascal Robert:
>>>>>>>>> 
>>>>>>>>>> One of our apps have deadlocked 5 times over 3 days, strangely 
>>>>>>>>>> enough it started when we moved our Oracle Database 10gR2 DB to our 
>>>>>>>>>> VMWare ESX 4.0 cluster. e didn't re-install Oracle, I simply did a 
>>>>>>>>>> P2V (Physical to VM) conversion, so it's the exact same version of 
>>>>>>>>>> Oracle DB as before.
>>>>>>>>>> 
>>>>>>>>>> What's happenning is that we store some information on our Oracle 
>>>>>>>>>> database, save it, and we built a copy of some of the data to a new 
>>>>>>>>>> EO (different entity) in a SQL Server 2005 db so the accounting 
>>>>>>>>>> system take care of billing.
>>>>>>>>>> 
>>>>>>>>>> The exception that cause the deadlock (or at least the last thing 
>>>>>>>>>> written to the log before the deadlock) :
>>>>>>>>>> 
>>>>>>>>>> java.lang.IllegalArgumentException: Attribute noCommandeOracle can't 
>>>>>>>>>> receive a null parameter :
>>>>>>>>>>      at 
>>>>>>>>>> com.acaiq.fondation.depot.lbaArticle._CommandesEcom.setNoCommandeOracle(_CommandesEcom.java:419)
>>>>>>>>>>      at 
>>>>>>>>>> com.acaiq.fondation.depot.Caissier.copiePourLBA(Caissier.java:267)
>>>>>>>>>>      at com.acaiq.fondation.depot.Caissier.paye(Caissier.java:137)
>>>>>>>>>>      at 
>>>>>>>>>> com.acaiq.depot.component.TransactionAchat.performAction(TransactionAchat.java:63)
>>>>>>>>>>      at 
>>>>>>>>>> com.webobjects.woextensions.WOLongResponsePage.run(WOLongResponsePage.java:119)
>>>>>>>>>>      at java.lang.Thread.run(Thread.java:613)
>>>>>>>>>> 
>>>>>>>>>> And it happens here :
>>>>>>>>>> 
>>>>>>>>>>      commandeEcom.setNoCommandeOracle(((Integer) 
>>>>>>>>>> _commande.clefsPrimaire()));
>>>>>>>>>> 
>>>>>>>>>> _commande.clefsPrimaire() is a method that simply do :
>>>>>>>>>> 
>>>>>>>>>>      return ERXEOControlUtilities.primaryKeyObjectForObject(this);
>>>>>>>>>> 
>>>>>>>>>> So clefsPrimaire() returns null, even if the data was stored in the 
>>>>>>>>>> Oracle DB (and it's really there) and a primary key was generated 
>>>>>>>>>> (EOF did it, it's not a "human generated" PK).
>>>>>>>>>> 
>>>>>>>>>> The whole block :
>>>>>>>>>> 
>>>>>>>>>> try {
>>>>>>>>>>      _commande.setEstPaye(true);
>>>>>>>>>>      _commande.editingContext().saveChanges();  // This is when we 
>>>>>>>>>> save the EO in Oracle
>>>>>>>>>> } catch (Exception e) {
>>>>>>>>>>      NSLog.err.appendln(e.getMessage());
>>>>>>>>>>      
>>>>>>>>>> remboursementPayflow((Transaction)pfd.valueForKey("transaction"),_commande,
>>>>>>>>>>  (String) pfd.valueForKey("PNREF"));
>>>>>>>>>>      pfd = new NSDictionary<Object, String>(CODE_RESUTAT, 
>>>>>>>>>> "REMBOURSEMENT");
>>>>>>>>>> } finally {
>>>>>>>>>>      try {
>>>>>>>>>>              copiePourLBA(_commande);  // This is the method where 
>>>>>>>>>> we copy some data to SQL Server
>>>>>>>>>>      } catch (Exception e) {
>>>>>>>>>>              NSLog.err.appendln(e.getMessage());
>>>>>>>>>>      }
>>>>>>>>>>      _commande.editingContext().saveChanges();
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> This problem didn't happen in the past (but we also had less 
>>>>>>>>>> requests coming him) and it doesn't always happen :-/ jstack give me 
>>>>>>>>>> tons of this :
>>>>>>>>>> 
>>>>>>>>>> Thread t...@71683: (state = BLOCKED)
>>>>>>>>>> - java.net.PlainSocketImpl.accept(java.net.SocketImpl) @bci=0, 
>>>>>>>>>> line=382 (Interpreted frame)
>>>>>>>>>> - java.net.ServerSocket.implAccept(java.net.Socket) @bci=50, 
>>>>>>>>>> line=450 (Interpreted frame)
>>>>>>>>>> - java.net.ServerSocket.accept() @bci=48, line=421 (Interpreted 
>>>>>>>>>> frame)
>>>>>>>>>> - com.webobjects.appserver._private.WOWorkerThread.run() @bci=26, 
>>>>>>>>>> line=238 (Interpreted frame)
>>>>>>>>>> - java.lang.Thread.run() @bci=11, line=613 (Interpreted frame)
>>>>>>>>>> 
>>>>>>>>>> The only non-blocked thread is :
>>>>>>>>>> 
>>>>>>>>>> Thread t...@78083: (state = IN_NATIVE)
>>>>>>>>>> - java.net.PlainSocketImpl.socketAccept(java.net.SocketImpl) @bci=0 
>>>>>>>>>> (Interpreted frame)
>>>>>>>>>> - java.net.PlainSocketImpl.accept(java.net.SocketImpl) @bci=7, 
>>>>>>>>>> line=384 (Interpreted frame)
>>>>>>>>>> - java.net.ServerSocket.implAccept(java.net.Socket) @bci=50, 
>>>>>>>>>> line=450 (Interpreted frame)
>>>>>>>>>> - java.net.ServerSocket.accept() @bci=48, line=421 (Interpreted 
>>>>>>>>>> frame)
>>>>>>>>>> - com.webobjects.appserver._private.WOWorkerThread.run() @bci=26, 
>>>>>>>>>> line=238 (Interpreted frame)
>>>>>>>>>> - java.lang.Thread.run() @bci=11, line=613 (Interpreted frame)
>>>>>>>>>> 
>>>>>>>>>> Beside going back to our Oracle physical server, I have no idea of 
>>>>>>>>>> why I'm getting this. Java 1.5 on OS X 10.4.11 Server, WO 5.3.3. W
>>>>>>>>>> 
>>>>>>>>>> <pid23991.txt>
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> ----
>>>>>>>>>> Pascal Robert
>>>>>>>>>> prob...@macti.ca
>>>>>>>>>> 
>>>>>>>>>> AIM: MacTICanada
>>>>>>>>>> Twitter : MacTICanada
>>>>>>>>>> LinkedIn : http://www.linkedin.com/in/macti
>>>>>>>>>> WO Community profile : 
>>>>>>>>>> http://wocommunity.org/page/member?name=probert
>>>>>>>>>> 
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/anjo%40krank.net
>>>>>>>>>> 
>>>>>>>>>> This email sent to a...@krank.net
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/jmlittle%40gmail.com
>>>>>>>> 
>>>>>>>> This email sent to jmlit...@gmail.com
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>>>>> 
>>>>>> This email sent to ch...@global-village.net
>>>>> 
>>>>> -- 
>>>>> Chuck Hill             Senior Consultant / VP Development
>>>>> 
>>>>> 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
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> http://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca
>>>> 
>>>> This email sent to prob...@macti.ca
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>>> 
>>> This email sent to msch...@pobox.com
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/kieran_lists%40mac.com
> 
> This email sent to kieran_li...@mac.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to