> 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 one additional commit 
since the last revision:

  @tstuefe comments

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/9406/files
  - new: https://git.openjdk.org/jdk/pull/9406/files/fef8058f..43f67c4e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=9406&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=9406&range=00-01

  Stats: 78 lines in 2 files changed: 39 ins; 22 del; 17 mod
  Patch: https://git.openjdk.org/jdk/pull/9406.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9406/head:pull/9406

PR: https://git.openjdk.org/jdk/pull/9406

Reply via email to