Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Provide a minimal agent for instrumenting methods with flight recorder events
  • Piggybacks on the flight recorder capabilities to provide :
    • Provides low overhead event generation
    , cheap time stamping and the ability for the user to dynamically enable/disable
    • Cheap time stamping
    • Allows subsequent enablement/disablement of generated events using normal JFR templates
  • Clear and precise syntax
    (No wildcards. Instrumentation points meant to be added with assistance from tooling, but syntax should be easy enough to be manually edited, if required.) 
  • Minimal overhead ( in terms of added code/generated classes
    (On parity with manually added events.) 
  • Loadable as an agent into an already running runtime
    (can Can redefine classes.)
  • Controllable through a JMX MBean
    (perhaps Perhaps simply an operation taking a new probe definition.)
  • Must be extremely safe out of the box
    • No calling methods / (avoiding halting problems/ unexpected exceptions (except possibly when converters enabled?)
    • No implicit type conversions (boxing of wrapper types to primitive types ok?)
    • General catch-all calls to toString(), if at all allowed, must be explicitly enabled
    • Module safe - only module redefinition is making jdk.jfr readable from instrumented modules
  • Built for production use
    • Need to have sufficient unit testing
    • Need to be tested against larger bodies of code (Oracle can help with Fusion staging and test environments etc)
    • Need to support OracleJDK 8 as well as OpenJDK 11+

...

  • Annotation driven generation
    (optOpt-in, adds the overhead of looking for annotations in all classes, i.e. parsing all classes.)
  • Get it into the JDK?
    (could Could potentially remove some of the overhead of looking for the annotations (wink) )

...

  • Should emit the minimum byte code required for emitting the event
  • Should generate the minimum amount of support classes and code required for emitting the event