Hello everyone, While we are still waiting for the review to make the settings virtual table updatable (CASSANDRA-15254), which will improve the configuration management experience for users, I'd like to take another step forward and improve the C* management approach we have as a whole. This approach aims to make all Cassandra management commands accessible via CQL, but not only that.
The problem of making commands accessible via CQL presents a complex challenge, especially if we aim to minimize code duplication across the implementation of management operations for different APIs and reduce the overall maintenance burden. The proposal's scope goes beyond simply introducing a new CQL syntax. It encompasses several key objectives for C* management operations, beyond their availability through CQL: - Ensure consistency across all public APIs we support, including JMX MBeans and the newly introduced CQL. Users should see consistent command specifications and arguments, irrespective of whether they're using an API or a CLI; - Reduce source code maintenance costs. With this new approach, when a new command is implemented, it should automatically become available across JMX MBeans, nodetool, CQL, and Cassandra Sidecar, eliminating the need for additional coding; - Maintain backward compatibility, ensuring that existing setups and workflows continue to work the same way as they do today; I would suggest discussing the overall design concept first, and then diving into the CQL command syntax and other details once we've found common ground on the community's vision. However, regardless of these details, I would appreciate any feedback on the design. I look forward to your comments! Please, see the design document: CEP-38: CQL Management API https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API