New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The messaging_service::_clients
list is not cleared on shutdown
#14624
Milestone
Comments
Closed
2 tasks
xemul
added a commit
to xemul/scylla
that referenced
this issue
Jul 11, 2023
When messaging_service shuts down it first sets _shutting_down to true and proceeds with stopping clients and servers. Stopping clients, in turn, is calling client.stop() on each. Setting _shutting_down is used in two places. First, when a client is stopped it may happen that it's in the middle of some operation, which may result in call to remove_error_rpc_client() and not to call .stop() for the second time it just does nothing if the shutdown flag is set (see 357c91a). Second, get_rpc_client() asserts that this flag is not set, so once shutdown started it can make sure that it will call .stop() on _all_ clients and no new ones would appear in parallel. However, after shutdown() is complete the _clients vector of maps remains intact even though all clients from it are stopped. This is not very debugging-friendly, the clients are better be removed on shutdown. fixes: scylladb#14624 Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
xemul
added a commit
to xemul/scylla
that referenced
this issue
Jul 25, 2023
When messaging_service shuts down it first sets _shutting_down to true and proceeds with stopping clients and servers. Stopping clients, in turn, is calling client.stop() on each. Setting _shutting_down is used in two places. First, when a client is stopped it may happen that it's in the middle of some operation, which may result in call to remove_error_rpc_client() and not to call .stop() for the second time it just does nothing if the shutdown flag is set (see 357c91a). Second, get_rpc_client() asserts that this flag is not set, so once shutdown started it can make sure that it will call .stop() on _all_ clients and no new ones would appear in parallel. However, after shutdown() is complete the _clients vector of maps remains intact even though all clients from it are stopped. This is not very debugging-friendly, the clients are better be removed on shutdown. fixes: scylladb#14624 Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
patjed41
pushed a commit
to patjed41/scylladb
that referenced
this issue
Jul 27, 2023
When messaging_service shuts down it first sets _shutting_down to true and proceeds with stopping clients and servers. Stopping clients, in turn, is calling client.stop() on each. Setting _shutting_down is used in two places. First, when a client is stopped it may happen that it's in the middle of some operation, which may result in call to remove_error_rpc_client() and not to call .stop() for the second time it just does nothing if the shutdown flag is set (see 357c91a). Second, get_rpc_client() asserts that this flag is not set, so once shutdown started it can make sure that it will call .stop() on _all_ clients and no new ones would appear in parallel. However, after shutdown() is complete the _clients vector of maps remains intact even though all clients from it are stopped. This is not very debugging-friendly, the clients are better be removed on shutdown. fixes: scylladb#14624 Signed-off-by: Pavel Emelyanov <xemul@scylladb.com> Closes scylladb#14632
No user impact, not backporting. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
this is to prevent
rpc::client::stop()
from being called twice (357c91a), but as a result we cannot trustscylla netw
of scylla-gdb.py afternodetool drain
:( Not niceThe text was updated successfully, but these errors were encountered: