mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-30 05:07:05 +00:00
" The way dc/rack info is maintained is very intricate. The dc/rack strings originate at snitch, get propagated via gossiper, get notified to storage service which, in turn, stores them into the system keyspace and token metadata. Code that needs to get dc/rack for a given endpoint calls snitch which tries to get the data from gossiper and if failed goes and loads it from system keyspace cache. Also there's "internal IP" thing hanging arond that loops messaging service in both -- updating and getting the info. The plan is to make topology (that currently sits on token metadata) stay the only "source of truth" regarding the endpoints' dc/rack and internal IP info. The dc/rack mappings are put into topology already, but it cannot yet fully replace snitch for two reasons: - it doesn't map internal IP to endpoint - it doesn't get data stored in system keyspace So what this patch set does is patches most of the dc/rack getters to call topology methods. The topology is temporarily patched to just call the respective snitch methods. This removes a big portion of calls for global snitch instance. After the set the places that still explicitly rely on snitch to provide dc/rack are - messaging service: needs internal IP knowledge on topology - db/consistency_level: is all "global", needs heavier patching - tests: just later " * 'br-get-dc-rack-from-topology-2' of https://github.com/xemul/scylla: proxy stats: Get rack/datacenter from topology proxy stats: Push topology arg to get_ep_stats api: Get rack/datacenter from topology hints: Remove snitch dependency hints: Get rack/datacenter from topology alternator: Get rack/datacenter from topology range_streamer: Get rack/datacenter from topology repair: Get rack/datacenter from topology view: Get rack/datacenter from topology storage_service: Get rack/datacenter from topology proxy: Get rack/datacenter from topology topology: Add get_rack/_datacenter methods