mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-06 15:03:06 +00:00
gossiper::apply_state_locally() calls handle_major_state_change() for each endpoint, in a seastar thread, which calls mark_alive() for new nodes, which calls ms().send_gossip_echo(id).get(). So it synchronously waits for each node to respond before it moves on to the next entry. As a result it may take a while before whole state is processed. Apache (tm) Cassandra (tm) sends echos in the background. In a large cluster, we see at the time the joining node starts streaming, it hasn't managed to apply all the endpoint_state for peer nodes, so the joining node does not know some of the nodes yet, which results in the joining node ingores to stream from some of the existing nodes. Fixes #2787 Fixes #2797 Message-Id: <3760da2bef1a83f1b6a27702a67ca4170e74b92c.1505719669.git.asias@scylladb.com>