mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-22 01:20:39 +00:00
When `nodetool disablebinary` command executes its handler aborts listening sockets, shuts down all client connections _and_ (!) then waits for the connections to stop existing. Effectively the command tries to make sure that no activity initiated by a CQL query continues, even though client would never see its result (client sockets are closed) This makes the disablebinary command hang for long sometimes, which is not really nice. The proposal is to wait for the connections to terminate in the background. So once disablebinary command exists what's guaranteed is that all client connections are aborted and new connections are not admitted, but some activity started by them may still be running (e.g. up until `nodetool drain` is issued). Driver-side sockets won't get the queries' results anyway. The behavior of `disablebinary` is not documented wrt whether it should wait for CQL processing to stop or not, so technically we're not breaking anything. However, it can happen that it's a disruptive change and some setups may behave differently after it. refs: #14031 refs: #14711 Closes #14743 * github.com:scylladb/scylladb: test/cql-pytest: Add enable|disable-binary test case test.py: Add suite option to auto-dirty cluster after test test/pylib: Add nodetool enable|disable-binary commands transport: Shutdown server on disablebinary generic_server: Introduce shutdown() generic_server: Decouple server stopped from connection stopped transport/controller: Coroutinize do_stop_server() transport/controller: Coroutinize stop_server()