Thanks for bringing this discussion Benjamin. I raised a similar point in
CASSANDRA-16725 <https://issues.apache.org/jira/browse/CASSANDRA-16725> and
it may become a recurrent topic now the code freeze is lifted and more
contributors will want to add new administrative commands to nodetool so
it's important that we discuss and decide a consistent approach to this
transition moving forward.

I was planning to write a CEP to propose a migration strategy from JMX to
Virtual tables but since this discussion came before I will detail my
thoughts so far.

I think that we should add new commands exclusively to Virtual Tables and
progressively migrate existing nodetool/JMX commands to VirtualTables/CQL
until we ultimately get rid of JMX/nodetool. Nevertheless, from the user
point of view it may be inconvenient/confusing to have administrative
commands split between different interfaces so we need to think about this
transition carefully to provide the best possible user experience.

My motivation for CASSANDRA-16513 <
https://issues.apache.org/jira/browse/CASSANDRA-16513> was that we're
already providing some functionalities exclusively via Virtual Tables, so
these features may not be visible to non-power users which are accustomed
to the nodetool CLI interface for admin commands. The original plan for
that ticket was to make nodetool abstract away the underlying interface
(JMX, CQL) for administrative commands, so we would expose admin
functionality via the same CLI interface (nodetool) to users while
progressively migrating the backend from JMX to CQL/VirtualTables.

Some people raised the concern that this could cause confusion among users
about which credentials to use if JMX or CQL for nodetool. Based on this
feedback I adapted the proposal to create an entirely different
administrative CLI tool (which I called admintool) to access/modify virtual
tables. In this proposal new administrative commands would be added
exclusively to Virtual Tables and would automatically land on this tool,
and legacy nodetool commands (via JMX) would be progressively migrated to
admintool (CQL/VT) until the migration is completed. The drawback of this
alternative proposal is that it would still split administrative commands
between different CLI tools.

So, if we decide to stop adding new admin functionality to JMX we have a
few options to make this transition smoother for our users:
1) Do nothing and tell users some admin functionalities will be accessible
exclusively via cqlsh/virtual tables - imo this option is the least
user-friendly.
2) Make nodetool hybrid and provide a consistent interface to users while
abstracting away the backend (JMX/CQL)
3) Create a new CLI tool (admintool) to provide CLI access to  virtual
tables and tell users to use both nodetool and admintool.

I personally think option 2 is the least disruptive to users during the
transition phase since people are already used to using nodetool so we can
provide a seamless transition to JMX while keeping the CLI tool for legacy
users. Even though there are concerns of confusion of which credentials to
use on nodetool if we support both interfaces, we can make sure this is
well documented.

Em qui., 15 de jul. de 2021 às 09:35, Benjamin Lerer <ble...@apache.org>
escreveu:

> Hi everyone,
>
> When Virtual Tables/System Views were introduced in 4.0 it was with the
> intention to provide a more friendly way than JMX and NodeTool to manage
> and monitor nodes.
>
> In CASSANDRA-16404 <https://issues.apache.org/jira/browse/CASSANDRA-16404
> >,
> Sam raises the point that it might make sense from now on to stop adding
> functionalities to NodeTool and to provide them through Virtual Tables.
> My initial feeling was that we could provide both until we decided to
> deprecate NodeTool but that would require some extra work and as such might
> not be a good strategy.
>
> What is your opinion on this?
>

Reply via email to