Open azatoth opened 4 months ago
The JVM is running as PID1, it's also the parent PID for the health check processes being run (I'm guessing just because it's PID1). At the same time, I doubt the JVM is set up to handle the responsibilities of PID1. PID1 is special and has to handle signal propagation and reaping zombie processes.
The only option I know of would be to insert a process, like tini that would handle the PID1 responsibilities. That's something that would have to be coordinated with Java buildpack, because that's is what's setting the start command here, and it would need a way for other buildpacks to signal that it should include a process like tini
. If it exposed an option like that, then we could make the health checker buildpack tell it to include tini.
Can you elaborate on the impact here & can you share the docker health check options you're using?
I was also think that if the health check fails, usually the container would be restarted. Just trying to understand the specifics of your set up. Thanks
So the impact is pretty small as, as you said, usually the container would be restarted; I noticed during the initial grace period which we have set to 10m, and as it didn't look right I thought its best to report it.
Thanks for the report, much appreciated.
Given the impact seems to be low and the effort to resolve this would be high, I'm going to leave this as is for now. I will leave this issue open though. If others are having this issue and the impact is higher, please reach out.
When the health check has failed, we notice defunct zombie processes are left behind
Expected Behavior
That the parent would clean up the process table
Current Behavior
everytime the healthcheck fails, a zombie is left behind.