26
votes

I am getting this error when I configured a job to do stop and start of tomcat server:

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information

When i googled it, i got a recommended solution as set BUILD_ID=dontKillMe
Is this the exact solution?
If yes, where do I need to set BUILD_ID? Inside ant/post build script?
Can anyone please clarify this?

5

5 Answers

15
votes

Yes, creating fake BUILD_ID for process tells Jenkins to ignore this process during detection spawned processes, so this process will be not killed after finishing job.

Usage: Enter BUILD_ID=dontKillMe before your command, for example into Execute shell build step:

 BUILD_ID=dontKillMe nohup ./yourStartScript.sh &

Note: See also nohup

10
votes

By default, Jenkins will kill all the spawned process at the completion of build.

To override this, you need to create environment variable BUILD_ID.

Go to Jenkins -> Manage Jenkins -> Configure System.

Now under Global properties section, under Environment variables, click on ADD button to add new Environment variable. Give name=BUILD_ID and value=allow_to_run_as_daemon start_my_service
Click on save button. And you are done.

Now the spawn process will continue to execute even after the build got completed.

6
votes

Add this line as a JAVA_ARGS argument when you start your jenkins server (I put mine on /etc/default/jenkins in my Ubuntu box)

-Dhudson.util.ProcessTree.disable=true

And you're done

3
votes

You are calling a command from Jenkins that spawns another process -
the tomcat-start command ends, but its child-process is still running
(this is the actual tomcat web-server you attempted to start).

Jenkins sometimes identifies this situation as a possible problem,
but the page you have mentioned also explains how to solve it
(in short: Don't start tomcat from Jenkins unless you know how).

0
votes

Tried different suggestions but none of the options worked for me. Finally I switched to previous version of jenkins and it worked. I switched from 2.3 to 1.581 and it worked.