Did you turn on SQL logging? Is it executing queries in that time? Probably the database is the bottleneck.
John On Thu, Jul 8, 2010 at 8:46 AM, Greg Lappen <[email protected]> wrote: > Hi all, > > I am running into a bizarre issue with our WebObjects Application. I have > searched the lists for quite a while, but could not find a case where > someone had the same problem. > > What is even stranger is that our application is deployed on two different > servers, both with WebObjects 5.4.3 and in one environment the issue occurs, > and not in the other. > > What I see is that calling editingContext.saveChanges() is returning > immediately in one case, and hanging for 20 seconds in the other case. It's > not really "hanging" - the CPU is pegged at over 100%, and taking thread > dumps during that 20 seconds shows something like this: > > "WorkerThread3" prio=5 tid=0x000000010296a800 nid=0x1519b2000 runnable > [0x00000001519af000] > java.lang.Thread.State: RUNNABLE > at java.lang.reflect.Array.newInstance(Array.java:52) > at > com.webobjects.foundation._NSCollectionPrimitives.copyArray(_NSCollectionPrimitives.java:123) > at com.webobjects.foundation.NSArray.objectsNoCopy(NSArray.java:356) > at > com.webobjects.foundation.NSMutableArray._removeObject(NSMutableArray.java:225) > at > com.webobjects.foundation.NSMutableArray.removeObject(NSMutableArray.java:247) > at > com.webobjects.foundation.NSMutableArray.removeObjects(NSMutableArray.java:399) > at > com.webobjects.foundation.NSMutableArray.removeObjectsInArray(NSMutableArray.java:285) > at > com.webobjects.foundation._NSArrayUtilities.arrayExcludingObjectsFromArray(_NSArrayUtilities.java:173) > at > com.webobjects.eoaccess.EODatabaseContext.recordChangesInEditingContext(EODatabaseContext.java:5943) > at > com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:373) > at > com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192) > at net.paperfree.lightbeam.model.LPFile.setFileData(LPFile.java:102) > > Seems like the EODatabaseContext is doing some housekeeping before > executing the SQL....here's the Java code in question: > > public class LPFile extends _LPFile { > .... > .... > public synchronized void setFileData(NSData fileData) throws > IOException { > // Update forms by deleting existing ones, then adding new ones > for (int i=lpFileForms().count()-1; i>=0; i--) { > final LPFileForm lpFileForm = (LPFileForm) > lpFileForms().objectAtIndex(i); > this.removeFromLpFileForms(lpFileForm); > editingContext().deleteObject(lpFileForm); > } > > // Get new form list via SOAP call > Element docInfoElm = > LPServer.threadLocal().exportDocumentInfo(this); > List formElms = formsElm.getChildren("form"); > for (int i = 0; i < formElms.size(); i++) { > Element formElm = (Element) formElms.get(i); > LPFileForm lpFileForm = new LPFileForm(); > > // extract data from xml, put into lpFileForm > > // Setup relationships to lpForm and lpFile > lpFileForm.setLpForm(lpForm); > lpFileForm.setLpFormID(lpForm.id()); > lpFileForm.setLpFile(this); > lpFileForm.setLpFileID(this.fileID()); > > this.addToLpFileForms(lpFileForm); > editingContext().insertObject(lpFileForm); > } > > editingContext().saveChanges(); > } > .... > .... > } > > Does the above code have anything obviously wrong with it? It's basically > clearing a one-to-many relationship, then re-populating it. I call > this.addToLpFileForms() because I want the relationship updated in memory as > well as in the database. > > Any insight would be hugely appreciated. > > Thanks, > > Greg > > _______________________________________________ > 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/johnthuss%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]
