mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-25 19:10:42 +00:00
This PR introduces 4 new virtual tables aimed at replacing nodetool commands, working towards the long-term goal of replacing nodetool completely at least for cluster information retrieval purposes. As you may have noticed, most of these replacement are not exact matches. This is on purpose. I feel that the nodetool commands are somewhat chaotic: they might have had a clear plan on what command prints what but after years of organic development they are a mess of fields that feel like don't belong. In addition to this, they are centered on C* terminology which often sounds strange or doesn't make any sense for scylla (off-heap memory, counter cache, etc.). So in this PR I tried to do a few things: * Drop all fields that don't make sense for scylla; * Rename/reformat/rephrase fields that have a corresponding concept in scylla, so that it uses the scylla terminology; * Group information in tables based on some common theme; With these guidelines in mind lets look at the virtual tables introduced in this PR: * `system.snapshots` - replacement for `nodetool listnapshots`; * `system.protocol_servers`- replacement for `nodetool statusbinary` as well as `Thrift active` and `Native Transport active` from `nodetool info`; * `system.runtime_info` - replacement for `nodetool info`, not an exact match: some fields were removed, some were refactored to make sense for scylla; * `system.versions` - replacement for `nodetool version`, prints all versions, including build-id; Closes #9517 * github.com:scylladb/scylla: test/cql-pytest: add virtual_tables.py test/cql-pytest: nodetool.py: add take_snapshot() db/system_keyspace: add versions table configure.py: move release.cc and build_id.cc to scylla_core db/system_keyspace: add runtime_info table db/system_keyspace: add protocol_servers table service: storage_service: s/client_shutdown_hooks/protocol_servers/ service: storage_service: remove unused unregister_client_shutdown_hook redis: redis_service: implement the protocol_server interface alternator: controller: implement the protocol_server interface transport: controller: implement the protocol_server interface thrift: controller: implement the protocol_server interface Add protocol_server interface db/system_keyspace: add snapshots virtual table db/virtual_table: remove _db member db/system_keyspace: propagate distributed<> database and storage_service to register_virtual_tables() docs/design-notes/system_keyspace.md: add listing of existing virtual tables docs/guides: add virtual-tables.md