It locked up again, but I have another clue. Frontbase is outputting the following error message every 10 seconds.

2009-03-07 22:17:28 [13295] fssAccept: Accept failed (24): Too many open files

Also, the current state of the thread in top:
PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE 13592 java 0.0% 12:00.76 30 479 293 679M 23M 693M 1782M

And lsof -p 13592 gives a TON of these:

java 13592 netBrackets 216u IPv6 0xa5be984 0t0 TCP [:: 127.0.0.1]:60567->[::127.0.0.1]:56748 (ESTABLISHED)

Why all the connections?

Jeff

On Mar 7, 2009, at 8:03 PM, Kieran Kelleher wrote:

IIRC, you have to do your own lock/unlock in regular background threads ..... I always do anyway .....

ec.lock();
try {
        //do stuff
} catch (Exception e) {
        // handle
} finally {
        ec.unlock();
}













On Mar 7, 2009, at 8:04 PM, Jeff Schmitz wrote:

Hello,
Below is my setup for executing a background thread with its own EOObjectStoreCoordinator and its own EOEdtingContext. Note that I'm using ERXEC to create the EOEditingContext, and have the below properties set. Also note that I don't do lock or unlock as I understand that ERXEC does this for you. Is this correct? Is it ok to use this in a thread? The reason I ask is that I can kick off the thread and not touch my app in any other way, and more often than not the calculations will hang after about 15 minutes as if its deadlocked. However I haven't been able to repeat the error with lock logging on yet. Could it have something to do with the Session timing out during processing? Or is there something else I don't have quite right?

er.extensions.ERXApplication.useEditingContextUnlocker=true
er.extensions.ERXEC.defaultAutomaticLockUnlock=true
er.extensions.ERXEC.useSharedEditingContext=false
er.extensions.ERXEC.defaultCoalesceAutoLocks=true
er .extensions .ERXEnterpriseObject.applyRestrictingQualifierOnInsert=true
er.extensions.ERXEnterpriseObject.updateInverseRelationships=true

public static void updateResults() {

   //Do lots of loops
   while (...) {
   resultsObjectStore = new EOObjectStoreCoordinator();
   resultsEC = ERXEC.newEditingContext(resultsObjectStore);

   //Do lots of processing.

   resultsEC.saveChanges();

   //Free up the memory, nothing will be reused in next loop anyway.
   resultsEC.dispose();
   resultsObjectStore.dispose();
   resultsObjectStore = new EOObjectStoreCoordinator();
   resultsEC = ERXEC.newEditingContext(resultsObjectStore);

   }
}

public static void updateResultsThread() {
   t = new Thread("updateResults") {
      public void run() {
         updateResults();
      }
   };
   t.start();
}


Thanks!
Jeff
_______________________________________________
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/kieran_lists%40mac.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