RFC : Fresh data / ERChangeNotification
RFC : Fresh data / ERChangeNotification
- Subject: RFC : Fresh data / ERChangeNotification
- From: Jean-François Veillette <email@hidden>
- Date: Tue, 10 Jan 2006 16:01:47 -0500
Long story short ...
We have many application collaborating in one system.
Many work units apps (many instances). One admin app (many instances).
The admin app should show status of work units. Work unit status depend on many objects and need a calculation based on 2 level of to-many relations.
When we start the admin app, it take long time to fetch the objects and show the first page, after that (once cached) it's very fast.
We had to ensure the admin app had fresh data, we simply used ERChangeNotification, and it worked !
We are now facing dead-lock issues on the admin app. Attached is stack of a locked app.
Reports point to ERChangeNotification as a possible source for our sudden problem : http://lists.apple.com/archives/webobjects-dev/2005/Oct/msg00560.html .
Any idea of what we can do (short term and long term) to get fresh data in our system ?
Long term, we already intend to pre-calculate some values so that we do not need to load all objects just to perform calculation and get status.
Any other idea ?
Note :
We are speaking mid 4k of work units, but should handle up to 80k by next year. In that context, reloading the object graph every time we render that page imply too many to-many relationship fetches. Changes on the clients are not that frequent, few per minutes (100 per days), so we thought that a change notification could serve us well.
We are looking for short/middle/long term suggestions.
Thanks,
- jfv
> where all
RMI LeaseChecker:
Current thread isn't suspended.
RMI Reaper:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:111)
[3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:127)
[4] sun.rmi.transport.ObjectTable$Reaper.run (ObjectTable.java:330)
[5] java.lang.Thread.run (Thread.java:552)
RMI TCP Accept-0:
[1] java.net.PlainSocketImpl.socketAccept (native method)
[2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:353)
[3] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[4] java.net.ServerSocket.accept (ServerSocket.java:419)
[5] sun.rmi.transport.tcp.TCPTransport.run (TCPTransport.java:334)
[6] java.lang.Thread.run (Thread.java:552)
EventManagerThread:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] org.exolab.jms.events.BasicEventManager.run (BasicEventManager.java:258)
[4] java.lang.Thread.run (Thread.java:552)
PingThread-11379670:
[1] java.lang.Thread.sleep (native method)
[2] org.exolab.jms.client.rmi.RmiJmsConnectionStub$PingThread.run (RmiJmsConnectionStub.java:249)
Clock Daemon:
[1] java.lang.Thread.sleep (native method)
[2] org.exolab.jms.util.Clock.run (Clock.java:210)
Thread-3:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] java.util.TimerThread.mainLoop (Timer.java:403)
[4] java.util.TimerThread.run (Timer.java:382)
GC Daemon:
[1] java.lang.Object.wait (native method)
[2] sun.misc.GC$Daemon.run (GC.java:100)
RMI RenewClean-[192.168.20.2:49316]:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:111)
[3] sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run (DGCClient.java:500)
[4] java.lang.Thread.run (Thread.java:552)
WorkerThread15:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread14:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread13:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] com.webobjects.foundation.NSRecursiveLock.lock (NSRecursiveLock.java:72)
[4] com.webobjects.eocontrol.EOObjectStoreCoordinator.lock (EOObjectStoreCoordinator.java:466)
[5] com.webobjects.eocontrol.EOEditingContext.lockObjectStore (EOEditingContext.java:4,675)
[6] com.webobjects.eocontrol.EOCustomObject.willReadRelationship (EOCustomObject.java:1,293)
[7] com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject (_EOMutableKnownKeyDictionary.java:560)
[8] com.webobjects.eocontrol.EOCustomObject.storedValueForKey (EOCustomObject.java:1,736)
[9] com.polyprotec.logique._Utilisateur.organisation (_Utilisateur.java:75)
[10] com.polyprotec.logique.Mandat.estCreateur (Mandat.java:1,513)
[11] com.polyprotec.interfaceweb.SectionMandat.estLectureCreateur (SectionMandat.java:145)
[12] sun.reflect.GeneratedMethodAccessor154.invoke (null)
[13] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[14] java.lang.reflect.Method.invoke (Method.java:324)
[15] com.webobjects.foundation.NSKeyValueCoding$1.methodValue (NSKeyValueCoding.java:684)
[16] com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject (NSKeyValueCoding.java:1,160)
[17] com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey (NSKeyValueCoding.java:1,268)
[18] com.webobjects.appserver.WOComponent.valueForKey (WOComponent.java:1,539)
[19] com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey (NSKeyValueCoding.java:498)
[20] com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.valueForKeyPath (NSKeyValueCodingAdditions.java:212)
[21] com.webobjects.appserver.WOComponent.valueForKeyPath (WOComponent.java:1,600)
[22] ca.os.utilitaires.OSComponent.valueForKeyPath (OSComponent.java:399)
[23] com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent (WOKeyValueAssociation.java:46)
[24] com.webobjects.appserver.WOAssociation.booleanValueInComponent (WOAssociation.java:278)
[25] com.webobjects.appserver._private.WOConditional.appendToResponse (WOConditional.java:62)
[26] com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse (WODynamicGroup.java:121)
[27] com.webobjects.appserver._private.WOConditional.appendToResponse (WOConditional.java:70)
[28] com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse (WODynamicGroup.java:121)
[29] com.webobjects.appserver._private.WODynamicGroup.appendToResponse (WODynamicGroup.java:130)
[30] com.webobjects.appserver.WOComponent.appendToResponse (WOComponent.java:992)
[31] ca.os.utilitaires.OSComponent.appendToResponse (OSComponent.java:126)
[32] com.webobjects.appserver._private.WOComponentReference.appendToResponse (WOComponentReference.java:111)
[33] com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse (WODynamicGroup.java:121)
[34] com.webobjects.appserver._private.WOForm.appendChildrenToResponse (WOForm.java:124)
[35] com.webobjects.appserver._private.WOHTMLDynamicElement.appendToResponse (WOHTMLDynamicElement.java:424)
[36] com.webobjects.appserver._private.WOForm.appendToResponse (WOForm.java:118)
[37] com.webobjects.appserver._private.WOComponentContent.appendToResponse (WOComponentContent.java:43)
[38] com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse (WODynamicGroup.java:121)
[39] com.webobjects.appserver._private.WODynamicGroup.appendToResponse (WODynamicGroup.java:130)
[40] com.webobjects.appserver.WOComponent.appendToResponse (WOComponent.java:992)
[41] ca.os.utilitaires.OSComponent.appendToResponse (OSComponent.java:126)
[42] com.webobjects.appserver._private.WOComponentReference.appendToResponse (WOComponentReference.java:111)
[43] com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse (WODynamicGroup.java:121)
[44] com.webobjects.appserver._private.WODynamicGroup.appendToResponse (WODynamicGroup.java:130)
[45] com.webobjects.appserver.WOComponent.appendToResponse (WOComponent.java:992)
[46] ca.os.utilitaires.OSComponent.appendToResponse (OSComponent.java:126)
[47] com.webobjects.appserver.WOSession.appendToResponse (WOSession.java:1,198)
[48] com.webobjects.appserver.WOApplication.appendToResponse (WOApplication.java:1,418)
[49] com.polyprotec.interfaceweb.PPApplication.appendToResponse (PPApplication.java:89)
[50] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedPage (WOComponentRequestHandler.java:230)
[51] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedSession (WOComponentRequestHandler.java:287)
[52] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedApplication (WOComponentRequestHandler.java:322)
[53] com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest (WOComponentRequestHandler.java:358)
[54] com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest (WOComponentRequestHandler.java:435)
[55] com.webobjects.appserver.WOApplication.dispatchRequest (WOApplication.java:1,306)
[56] com.webobjects.appserver._private.WOWorkerThread.runOnce (WOWorkerThread.java:173)
[57] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:254)
[58] java.lang.Thread.run (Thread.java:552)
WorkerThread12:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread11:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] com.webobjects.foundation.NSRecursiveLock.lock (NSRecursiveLock.java:72)
[4] com.webobjects.eocontrol.EOEditingContext.lock (EOEditingContext.java:4,624)
[5] com.polyprotec.interfaceweb.PageEdition.awake (PageEdition.java:125)
[6] com.webobjects.appserver.WOComponent._awakeInContext (WOComponent.java:862)
[7] com.webobjects.appserver.WOSession.restorePageForContextID (WOSession.java:710)
[8] com.webobjects.appserver._private.WOComponentRequestHandler._restorePageForContextID (WOComponentRequestHandler.java:156)
[9] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedSession (WOComponentRequestHandler.java:277)
[10] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedApplication (WOComponentRequestHandler.java:322)
[11] com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest (WOComponentRequestHandler.java:358)
[12] com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest (WOComponentRequestHandler.java:435)
[13] com.webobjects.appserver.WOApplication.dispatchRequest (WOApplication.java:1,306)
[14] com.webobjects.appserver._private.WOWorkerThread.runOnce (WOWorkerThread.java:173)
[15] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:254)
[16] java.lang.Thread.run (Thread.java:552)
WorkerThread10:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread9:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread8:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread7:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread6:
[1] java.net.PlainSocketImpl.socketAccept (native method)
[2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:353)
[3] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[4] java.net.ServerSocket.accept (ServerSocket.java:419)
[5] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[6] java.lang.Thread.run (Thread.java:552)
WorkerThread5:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread4:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread3:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] com.webobjects.foundation.NSRecursiveLock.lock (NSRecursiveLock.java:72)
[4] com.webobjects.eocontrol.EOEditingContext.lock (EOEditingContext.java:4,624)
[5] com.polyprotec.interfaceweb.PageEdition.awake (PageEdition.java:125)
[6] com.webobjects.appserver.WOComponent._awakeInContext (WOComponent.java:862)
[7] com.webobjects.appserver.WOSession.restorePageForContextID (WOSession.java:710)
[8] com.webobjects.appserver._private.WOComponentRequestHandler._restorePageForContextID (WOComponentRequestHandler.java:156)
[9] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedSession (WOComponentRequestHandler.java:277)
[10] com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPreparedApplication (WOComponentRequestHandler.java:322)
[11] com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest (WOComponentRequestHandler.java:358)
[12] com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest (WOComponentRequestHandler.java:435)
[13] com.webobjects.appserver.WOApplication.dispatchRequest (WOApplication.java:1,306)
[14] com.webobjects.appserver._private.WOWorkerThread.runOnce (WOWorkerThread.java:173)
[15] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:254)
[16] java.lang.Thread.run (Thread.java:552)
WorkerThread2:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread1:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
WorkerThread0:
[1] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:351)
[2] java.net.ServerSocket.implAccept (ServerSocket.java:448)
[3] java.net.ServerSocket.accept (ServerSocket.java:419)
[4] com.webobjects.appserver._private.WOWorkerThread.run (WOWorkerThread.java:238)
[5] java.lang.Thread.run (Thread.java:552)
Thread-1:
[1] java.lang.Thread.sleep (native method)
[2] org.apache.log4j.helpers.FileWatchdog.run (FileWatchdog.java:95)
Thread-0:
[1] java.lang.Thread.sleep (native method)
[2] com.webobjects.appserver.WOApplication$_LifebeatThread.run (WOApplication.java:1,233)
Session Timeout Thread:
Current thread isn't suspended.
Signal Dispatcher:
Finalizer:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] com.webobjects.foundation.NSRecursiveLock.lock (NSRecursiveLock.java:72)
[4] com.webobjects.eocontrol.EOObjectStoreCoordinator.lock (EOObjectStoreCoordinator.java:466)
[5] com.webobjects.eocontrol.EOEditingContext.lockObjectStore (EOEditingContext.java:4,675)
[6] com.webobjects.eocontrol.EOEditingContext._dispose (EOEditingContext.java:1,047)
[7] com.webobjects.eocontrol.EOEditingContext.finalize (EOEditingContext.java:1,113)
[8] java.lang.ref.Finalizer.invokeFinalizeMethod (native method)
[9] java.lang.ref.Finalizer.runFinalizer (Finalizer.java:83)
[10] java.lang.ref.Finalizer.access$100 (Finalizer.java:14)
[11] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:160)
Reference Handler:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] java.lang.ref.Reference$ReferenceHandler.run (Reference.java:115)
main:
[1] java.lang.Object.wait (native method)
[2] com.webobjects.appserver._WORunLoop._acceptInputBeforeDate (_WORunLoop.java:217)
[3] com.webobjects.appserver._WORunLoop.runBeforeDate (_WORunLoop.java:71)
[4] com.webobjects.appserver.WOApplication._runOnce (WOApplication.java:775)
[5] com.webobjects.appserver.WOApplication.run (WOApplication.java:900)
[6] com.webobjects.appserver.WOApplication.main (WOApplication.java:324)
[7] com.polyprotec.fct.Application.main (Application.java:27)
[8] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
[9] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
[10] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[11] java.lang.reflect.Method.invoke (Method.java:324)
[12] com.webobjects._bootstrap.WOBootstrap.main (WOBootstrap.java:71)
RMI TCP Connection(727)-192.168.20.2:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:429)
[3] com.webobjects.foundation.NSMultiReaderLock$ConditionLock.await (NSMultiReaderLock.java:505)
[4] com.webobjects.foundation.NSMultiReaderLock._lockForWriting (NSMultiReaderLock.java:204)
[5] com.webobjects.foundation.NSMultiReaderLock.lockForWriting (NSMultiReaderLock.java:165)
[6] com.webobjects.eocontrol.EOSharedEditingContext.lock (EOSharedEditingContext.java:700)
[7] com.webobjects.eocontrol.EOEditingContext.lockObjectStore (EOEditingContext.java:4,673)
[8] com.webobjects.eocontrol.EOEditingContext._processReferenceQueue (EOEditingContext.java:4,769)
[9] com.webobjects.eocontrol.EOEditingContext._processRecentChanges (EOEditingContext.java:1,869)
[10] com.webobjects.eocontrol.EOEditingContext.processRecentChanges (EOEditingContext.java:1,890)
[11] com.webobjects.eocontrol.EOEditingContext._processObjectStoreChanges (EOEditingContext.java:3,475)
[12] sun.reflect.GeneratedMethodAccessor168.invoke (null)
[13] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[14] java.lang.reflect.Method.invoke (Method.java:324)
[15] com.webobjects.foundation.NSSelector.invoke (NSSelector.java:354)
[16] com.webobjects.foundation.NSSelector._safeInvokeSelector (NSSelector.java:108)
[17] com.webobjects.eocontrol.EOEditingContext._processNotificationQueue (EOEditingContext.java:4,750)
[18] com.webobjects.eocontrol.EOEditingContext.lock (EOEditingContext.java:4,627)
[19] com.webobjects.eocontrol.EOEditingContext.tryLock (EOEditingContext.java:4,639)
[20] com.webobjects.eocontrol.EOEditingContext._sendOrEnqueueNotification (EOEditingContext.java:4,714)
[21] com.webobjects.eocontrol.EOEditingContext._objectsChangedInStore (EOEditingContext.java:3,537)
[22] sun.reflect.GeneratedMethodAccessor167.invoke (null)
[23] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[24] java.lang.reflect.Method.invoke (Method.java:324)
[25] com.webobjects.foundation.NSSelector._safeInvokeMethod (NSSelector.java:120)
[26] com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod (NSNotificationCenter.java:598)
[27] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:542)
[28] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:572)
[29] com.webobjects.eocontrol.EOObjectStoreCoordinator._objectsChangedInSubStore (EOObjectStoreCoordinator.java:744)
[30] sun.reflect.GeneratedMethodAccessor65.invoke (null)
[31] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[32] java.lang.reflect.Method.invoke (Method.java:324)
[33] com.webobjects.foundation.NSSelector._safeInvokeMethod (NSSelector.java:120)
[34] com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod (NSNotificationCenter.java:598)
[35] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:542)
[36] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:572)
[37] com.webobjects.eoaccess.EODatabaseContext._snapshotsChangedInDatabase (EODatabaseContext.java:3,812)
[38] sun.reflect.GeneratedMethodAccessor64.invoke (null)
[39] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[40] java.lang.reflect.Method.invoke (Method.java:324)
[41] com.webobjects.foundation.NSSelector._safeInvokeMethod (NSSelector.java:120)
[42] com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod (NSNotificationCenter.java:598)
[43] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:542)
[44] com.webobjects.foundation.NSNotificationCenter.postNotification (NSNotificationCenter.java:572)
[45] com.webobjects.eoaccess.EODatabase.forgetSnapshotForGlobalID (EODatabase.java:915)
[46] er.changenotification.ERCNSubscriber._processUpdates (ERCNSubscriber.java:166)
[47] er.changenotification.ERCNSubscriber.onMessage (ERCNSubscriber.java:100)
[48] org.exolab.jms.client.JmsMessageConsumer.onMessage (JmsMessageConsumer.java:292)
[49] org.exolab.jms.client.JmsSession.execute (JmsSession.java:669)
[50] org.exolab.jms.client.JmsSession.onMessage (JmsSession.java:607)
[51] org.exolab.jms.client.rmi.RmiJmsSessionStub.onMessage (RmiJmsSessionStub.java:539)
[52] sun.reflect.GeneratedMethodAccessor9.invoke (null)
[53] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
[54] java.lang.reflect.Method.invoke (Method.java:324)
[55] sun.rmi.server.UnicastServerRef.dispatch (UnicastServerRef.java:261)
[56] sun.rmi.transport.Transport$1.run (Transport.java:148)
[57] java.security.AccessController.doPrivileged (native method)
[58] sun.rmi.transport.Transport.serviceCall (Transport.java:144)
[59] sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:460)
[60] sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run (TCPTransport.java:701)
[61] java.lang.Thread.run (Thread.java:552)
RMI ConnectionExpiration-[192.168.20.2:49316]:
[1] java.lang.Thread.sleep (native method)
[2] sun.rmi.transport.tcp.TCPChannel$Reaper.run (TCPChannel.java:447)
[3] java.lang.Thread.run (Thread.java:552)
> exit
_______________________________________________
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