Yaman: Thank you for taking this on - the plan to me looks great, and I'm looking forward to seeing it progress.
Doug > On Jul 2, 2025, at 3:26 PM, Yaman Ziadeh (BLOOMBERG/ 919 3RD A) > <yzia...@bloomberg.net> wrote: > > Hey everyone! > > Thanks for the great discussion - I've consolidated the discussion points > into the following set of requirements: > Include the async-profiler library with Cassandra > Allow for easy async-profiler library version upgrades independent of > Cassandra > Expose a JMX interface to access common commands (start, stop, etc.) > Expose a default-disabled interface to access the 'execute' method for > advanced usage > Create a nodetool command that reaches out to this interface > Expose this feature through Sidecar's API > > Given these requirements, I'll be developing this feature with the following > general plan in mind: > Drop-in async-profiler jar & native lib files into top-level cassandra repo > Include these files into the Cassandra build via build.xml > Make an AsyncProfilerService class for loading native lib file and calling > out to the async-profiler.jar > Register an MBean for the AsyncProfilerService > MBean provides 3 methods: start, stop, and raw > "Simple mode": start/stop will allow a common subset of flags (duration, > event, output format, etc.) > raw will expose the execute method for free-use > default disabled - calls are rejected at runtime unless a JVM flag is > included to enable this feature > Add new `nodetool profile` command > `nodetool profile start --duration 30 --event cpu` > `nodetool profile stop ` > `nodetool profile --raw ...` > Create Sidecar API interface to call out to C* node-specific > AsyncProfilerService > Build a unit/integration test suite for this async-profiler integration in C* > and Sidecar