RFR: 8280684: JfrRecorderService failes with guarantee(num_written > 0) when no space left on device.

Markus Grönlund mgronlun at openjdk.java.net
Thu Feb 10 19:18:13 UTC 2022


On Wed, 26 Jan 2022 06:41:41 GMT, KIRIYAMA Takuya <duke at openjdk.java.net> wrote:

> I think JFR should report an error message and jvm should shut down safely instead of gurantee failure.
> 
> For instance, jdk.jfr.internal.Repository#newChunk() reports an appropriate message and stops jvm as below
> by using JfrJavaSupport::abort().
> 
> [0.673s][error][jfr] Could not create chunk in repository /tmp/2022_01_12_22_32_42_18030, class java.io.IOException: Unable to create JFR repository directory using base location (/tmp)
> [0.673s][error][jfr,system] Could not create chunk in repository /tmp/2022_01_12_22_32_42_18030, class java.io.IOException: Unable to create JFR repository directory using base location (/tmp)
> [0.673s][error][jfr,system] An irrecoverable error in Jfr. Shutting down VM...
> 
> I modified StreamWriterHost not to call guarantee failure but to call JfrJavaSupport::abort().
> I added a argument to JfrJavaSupport::abort() which tells os::abort() not to put out core 
> because there is no space on device.
> Could you please review the fix?

Hi Takuya, thanks for your contribution.

src/hotspot/share/jfr/jni/jfrJavaSupport.hpp line 103:

> 101: 
> 102:   // critical
> 103:   static void abort(jstring errorMsg, TRAPS, bool dump_core=true);

Not sure this is necessary. The existing core dump logic already handles the case where a core file cannot be generated due to disk full.

test/hotspot/jtreg/runtime/jfr/TestJFRDiskFull.java line 127:

> 125:         raf.close();
> 126:     }
> 127: }

I appreciate the effort, but we can't have a test that intentionally provokes a disk full situation. Instead, the updated error message will have to be manually verified.

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

Changes requested by mgronlun (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/7227


More information about the hotspot-jfr-dev mailing list