RFR: 8307526: [JFR] Better handling of tampered JFR repository [v2]
Andrey Turbanov
aturbanov at openjdk.org
Tue Jun 13 15:20:53 UTC 2023
On Wed, 7 Jun 2023 15:42:44 GMT, Joakim Nordström <jnordstrom at openjdk.org> wrote:
>> This change makes sure that "JFR Periodic Task" isn't interrupted by any errors. This can happen when an unfinished chunkfile is removed "in-flight", which would lead to the chunkfiles not being rotated properly, and the maxsize/maxage being ignored.
>>
>> With this fix, when an unfinished chunkfile is detected, all of the chunkfiles in the recording are checked for existence (since one likely cause for this could be f.i. 'rm -r /tmp' being invoked, effectively deleting all chunkfiles). Upon seeing missing chunkfiles, an error is logged, and emitted to the recording to signal that some data might be missing.
>> A check to catch any missing chunkfiles is also added when dumping a recording -- this can happen if only finished chunkfiles have been removed, which is not detected in-flight.
>>
>> Also, a check was added to the file purger to check whether the file had already been deleted to not fill the purge list with already removed files.
>
> Joakim Nordström has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains six commits:
>
> - Merge
> - 8307526: [JFR] Better handling of tampered JFR repository
> - 8307526: [JFR] Better handling of tampered JFR repository
> - 8307526: [JFR] Better handling of tampered JFR repository
> - 8307526: [JFR] Better handling of tampered JFR repository
> - 8307526: [JFR] Better handling of tampered JFR repository
src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java line 526:
> 524: long minDelta = PeriodicEvents.doPeriodic();
> 525: wait = Math.min(minDelta, Options.getWaitInterval());
> 526: } catch(Throwable t) {
Suggestion:
} catch (Throwable t) {
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14360#discussion_r1228314125
More information about the hotspot-jfr-dev
mailing list