Hi Siegfried, I have implemented the executor watchdogs and shutdown hooks. I will know if our efforts have been fruitful when we make our first restart which I'm sure will be soon. I promise I'll write back and let you know how it goes.
Thank you vary much for checking in with me! > On Jun 5, 2017, at 11:45 AM, Siegfried Goeschl > <siegfried.goes...@it20one.com> wrote: > > Hi Chris, > > any new findings from your side? > > Thanks in advance, > > Siegfried Goeschl > >> On 28 May 2017, at 21:41, Siegfried Goeschl <siegfried.goes...@it20one.com> >> wrote: >> >> Hi Chris, >> >> there are couple of things to consider >> >> * You are using a PumpStreamHander but the STDERR is not consumed. Each >> process has an internal buffer (size depends on the OS) and when the buffer >> is full any write to STDERR is blocked >> * That could happen if the process being executed actually writes some error >> messages :-) >> * Are you 100% sure that the processes will terminate? See ExecuteWatchdog >> * You might habe a look at ProcessDestroyer to cleanup during shutdown >> >> Thanks in advance, >> >> Siegfried Goeschl >> >> >>> On 27 May 2017, at 14:27, Chris Gamache <cgama...@gmail.com> wrote: >>> >>> Hi all, >>> >>> I'm using org.apache.commons:commons-exec:1.3 on Java 8. >>> >>> I'm having an issue where my Tomcat server is bleeding out hundreds of >>> threads and all of the memory in the form of Executors that I'm running but >>> don't seem to be closing down ... When the server finally grinds to a halt >>> I have to restart. When I do it looks like this at shutdown time: >>> >>> <snip> >>> >>> 27-May-2017 07:56:21.631 WARNING [localhost-startStop-11] >>> org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The >>> web application [ROOT##000252] appears to have started a thread named [Exec >>> Default Executor] but has failed to stop it. This is very likely to create >>> a memory leak. Stack trace of thread: >>> java.lang.Object.wait(Native Method) >>> java.lang.Object.wait(Object.java:502) >>> java.lang.UNIXProcess.waitFor(UNIXProcess.java:396) >>> org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:364) >>> org.apache.commons.exec.DefaultExecutor.access$200(DefaultExecutor.java:48) >>> org.apache.commons.exec.DefaultExecutor$1.run(DefaultExecutor.java:200) >>> java.lang.Thread.run(Thread.java:745) >>> >>> 27-May-2017 07:56:21.633 WARNING [localhost-startStop-11] >>> org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The >>> web application [ROOT##000252] appears to have started a thread named [Exec >>> Stream Pumper] but has failed to stop it. This is very likely to create a >>> memory leak. Stack trace of thread: >>> java.io.FileInputStream.readBytes(Native Method) >>> java.io.FileInputStream.read(FileInputStream.java:255) >>> java.io.BufferedInputStream.fill(BufferedInputStream.java:246) >>> java.io.BufferedInputStream.read1(BufferedInputStream.java:286) >>> java.io.BufferedInputStream.read(BufferedInputStream.java:345) >>> java.io.FilterInputStream.read(FilterInputStream.java:107) >>> org.apache.commons.exec.StreamPumper.run(StreamPumper.java:107) >>> java.lang.Thread.run(Thread.java:745) >>> >>> </snip> >>> >>> And my thread dump is a mile long. >>> >>> I am certainly willing to concede I'm Doing It Wrong(tm) ... Here's the >>> relevant code. It is called from a regular method in a regular class, >>> nothing fancy: >>> >>> CommandLine cmdLine = CommandLine.parse(command.toString()); >>> DefaultExecutor executor = new DefaultExecutor(); >>> PumpStreamHandler esh = new PumpStreamHandler(os,null,is); >>> executor.setStreamHandler(esh); >>> executor.execute(cmdLine); >>> >>> `is` and `os` are passed in on the constructor. Their opens and closes are >>> managed well and cleaned up on the outside of this class... >>> Are there further steps I'm missing to ensure the threads I'm creating are >>> getting shut down properly and the resources they are using are being >>> returned? >>> >>> Any help is much appreciated. >> > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org