RFR: 8284686: Interval of < 1 ms disables ExecutionSample events

Johannes Bechberger duke at openjdk.java.net
Wed Apr 13 09:10:15 UTC 2022


On Wed, 13 Apr 2022 09:00:38 GMT, Jaroslav Bachorik <jbachorik at openjdk.org> wrote:

>> Fixes the issue by rounding the period interval to the next full millisecond larger than zero.
>> 
>> The following from the bug report works now:
>> 
>> java -XX:StartFlightRecording=filename=flight.jfr,jdk.ExecutionSample#period=999us CLASS_FILE; jfr print --events jdk.ExecutionSample flight.jfr
>> 
>> It considers the period to be `1ms`, producing the recording as expected.
>
> src/jdk.jfr/share/classes/jdk/jfr/internal/settings/PeriodSetting.java line 118:
> 
>> 116:             long nanos = Utils.parseTimespanWithInfinity(value);
>> 117:             if (nanos != Long.MAX_VALUE) {
>> 118:                 eventType.setPeriod(Math.max(1, Math.round(nanos / 1_000_000f)), false, false);
> 
> Is `Math.round()` necessary here? 
> We can just keep the integer division which will result to `0` for all arguments < 1_000_000 and the `Math.max()` will take care of providing the correct default.
> 
> Another thing to consider - what should happen if the `nanos` value is indeed `0`. Should the event perhaps be disabled?

You're correct. I will alter it accordingly.

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

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


More information about the hotspot-jfr-dev mailing list