In my opinion and experience, this isn’t a real problem, since you define a
list of seeds as the first few nodes you add to a cluster. When would you add
a node to an existing cluster and mark itself as a seed? It’s neither
practical or something you’d do by accident.
> On Feb 23, 2018, at 10:17 AM, Jeff Jirsa <jji...@gmail.com> wrote:
> On Fri, Feb 23, 2018 at 10:12 AM, Oleksandr Shulgin
> <oleksandr.shul...@zalando.de <mailto:oleksandr.shul...@zalando.de>> wrote:
> On Fri, Feb 23, 2018 at 7:02 PM, Jeff Jirsa <jji...@gmail.com
> <mailto:jji...@gmail.com>> wrote:
> Yes, seeds don't bootstrap. But why? I don't think I ever seen a
> comprehensive explanation of this.
> The meaning of seed in the most common sense is "connect to this host, and
> use it as the starting point for adding this node to the cluster".
> If you specify that a joining node is the seed, the implication is that it's
> already a member of the cluster (or, alternatively, authoritative on the
> cluster's state). Given that implication, why would it make sense to then
> proceed to bootstrap? By setting it as a seed, you've told it that it already
> knows what the cluster is.
> Well, there is certain logic in that. However, bootstrap is about streaming
> in the data, isn't it? And being seed is about knowing the topology, i.e.
> which nodes exist in the cluster. There is actually 0 overlap of these two
> concerns, so I don't really see why a seed node shouldn't be able to
> bootstrap. Would it break anything if it could, e.g. if you're explicit
> about it and request auto_boostrap=true?
> I dont *think* it would break anything, but the more obvious answer is just
> not to list the node as a seed if it needs to bootstrap.
> This comes up a lot, and it's certainly one of those rough operator edges
> that we can do better with. There's no strict requirement to have all of the
> seeds exactly the same in a cluster, so if you need to bootstrap a new seed,
> just join it with it not a seed, then bounce it to make it think it's a seed
> after it's joined.
> The easier answer is probably "give people a way to change seeds after
> they're running", and it sorta exists, but it's hard to invoke intentionally.
> We should just make that easier, and the rough edges will get a little less