On Tue, 12 Jul 2022 19:12:01 GMT, Ioi Lam <ik...@openjdk.org> wrote: >> Some Kubernetes setups share the /tmp directory across multiple containers. >> On rare occasions, the JVM may crash when it tries to write to >> `/tmp/hsperfdata_<user>/<pid>` when a process in a separate container >> decides to do the same thing (because they happen to have the same >> namespaced pid). >> >> This patch avoids the crash by using `flock()` to allow only one of these >> processes to write to the file. All other competing processes that fail to >> grab the lock will give up the file and run with PerfMemory disabled. We >> will try to enable PerfMemory for the failed processes in a follow-up RFE: >> [JDK-8289883](https://bugs.openjdk.org/browse/JDK-8289883) >> >> Thanks to Vitaly Davidovich and Nico Williams for coming up with the idea of >> using `flock()`. >> >> I kept the use of `kill()` for stale file detection to be compatible with >> older JVMs. >> >> I also took the opportunity to clean up the comments and remove dead code. >> The old code was using "shared memory resources" which sounds unclear and >> odd. I changed the terminology to say "shared memory file" instead. > > Ioi Lam has updated the pull request incrementally with two additional > commits since the last revision: > > - add errno to log > - added debug log and tweaked comment
Looks good! ------------- Marked as reviewed by stuefe (Reviewer). PR: https://git.openjdk.org/jdk/pull/9406