RFR: 8245120: JFR: Parser unable to return typed version
Erik Gahlin
erik.gahlin at oracle.com
Mon May 25 12:50:30 UTC 2020
Hi,
Could I have a review of a fix that prevents a ClassCastException when using Event Streaming.
Thread constants are in some scenarios emitted twice for the same chunk, which means the value will be parsed twice. This does not typically happen in JFR, since we want to keep files as compact as possible, but if it happens, the second version replaces the first.
The value is however still tagged as resolved, which means a conversion from Object[] to RecordedThread never happen for the second version. This leads to ClassCastException when the raw value (Object[]) can’t be casted to a typed version, i.e RecordedThread, in the API.
Fix is to clear tagging if a value already exists.
Bug:
https://bugs.openjdk.java.net/browse/JDK-8245120
Webrev:
http://cr.openjdk.java.net/~egahlin/8245120/
Testing: jdk/jdk/jfr
During testing I modified the parser so it verifies there are no unresolved objects (Object[]) for know types, such as RecordedThread and RecordedClass, when running tests in jdk/jdk/jfr
Thanks
Erik
More information about the hotspot-jfr-dev
mailing list