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

Reply via email to