Hi all,

A project I'm working on right now requires that a daemon/service running
on the same host as Cassandra be able to connect via JMX for many of the
same functions as nodetool and sstablemetadata.
The classpath that nodetool uses includes all the jars in cassandra/lib, so
we are using the same list.

The issue that we're running into is that eventually some of the classes in
org.apache.cassandra.db.commitlog are loaded, threads are created and
started in the static blocks and the process opens a handle/fd on the
commitlog files.
It will also creates a new log file if the commitlog_directory is empty.

Right now we're getting around this by putting a jar with no-op
implementations of nearly everything in the db.commitlog package on the
classpath before the cassandra/lib jars.
I've created CASSANDRA-13605 because it seems possible that this could be
observed by a long-running nodetool repair or compaction command, but in
the meantime are there any more common practices than this kludge we've
implemented?

We want to call public methods from the Cassandra internals instead of
creating nodetool processes and parsing stdout.
Adding a jar to the Cassandra classpath as a proxy is also not preferred
because of the way our product dependencies are handled internally at the
company.

Thanks,
Nathan

Reply via email to