Still digging into this.  It appears that the SessionStats are held by
StatisticsManager in the RepositoryImpl class, and are not being held by
unclosed Sessions.  I haven¹t been able to determine when they should be
released, but I assume it is in one of the executors that Oak opens.
Possibly related is the fact that on shutdown we have dozens of dangling
threads, evidenced in the Tomcat logs:

WARNING: The web application [red-oak-cms] appears to have started a
thread named [oak-scheduled-executor-744] but has failed to stop it. This
is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awai
tNanos(AbstractQueuedSynchronizer.java:2078)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.poll(Sch
eduledThreadPoolExecutor.java:1129)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.poll(Sch
eduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:10
66)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java
:617)
 java.lang.Thread.run(Thread.java:745)



This leads me to believe that something is causing the executor threads to
hang and not complete their cleanup.

On shutdown, we attempt to clean up the application by calling:
((RepositoryImpl) repository).shutdown();
ns.dispose();


Jim Tully 

Reply via email to