mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
" Messaging service checks dc/rack of the target node when creating a socket. However, this information is not available for all verbs, in particular gossiper uses RPC to get topology from other nodes. This generates a chicken-and-egg problem -- to create a socket messaging service needs topology information, but in order to get one gossiper needs to create a socket. Other than gossiper, raft starts sending its APPEND_ENTRY messages early enough so that topology info is not avaiable either. The situation is extra-complicated with the fact that sockets are not created for individual verbs. Instead, verbs are groupped into several "indices" and socket is created for it. Thus, the "gossiping" index that includes non-gossiper verbs will create topology-less socket for all verbs in it. Worse -- raft sends messages w/o solicited topology, the corresponding socket is created with the assumption that the peer lives in default dc and rack which doesn't matchthe local nodes' dc/rack and the whole index group gets the "randomly" configured socket. Also, the tcp-nodelay tries to implement similar check, but uses wrong index of 1, so it's also fixed here. " * 'br-messaging-topology-ignoring-clients' of https://github.com/xemul/scylla: messaging_service: Fix gossiper verb group messaging_service: Mind the absence of topology data when creating sockets messaging_service: Templatize and rename remove_rpc_client_one