Short Story
Check the “Introducer” flag for a node to import any nodes added there. A typical use case would be to have a central sync server which is trusted as an introducer by the clients. When a new client is added on the central server, the other clients will also add that node to their config, for the same shared repositories.
Background & Theory
As part of the connection handshake between two nodes, some information about the cluster setup is exchanged. When node Alice
connects to node Bob
, the following is sent:
- A list of all repositories
Alice
shares withBob
. - For each such repository, the list of nodes
Alice
shares that repository with.
In effect, this is a complete view of the cluster, as it pertains to the repositories that are shared with Bob
. Until now, that information wasn’t actually used for anything. With the new “Introducer Node” feature, Bob
can chose to mark Alice
as an introducer, and automatically adopt any nodes that Alice
has but not Bob
.
Introducer status is transferrable; that is, an introducers’ introducer will become your introducer as well. This is best clarified by an example.
Lets assume that Alice
already has connections toCharlie
(trusted as introducer) and Eve
(not trusted as an introducer). Now Bob
, an otherwise blank node, is added to Alice
. Bob
adds Alice
to his configuration too and sets the introducer flag. Alice
sends her cluster configuration. Bob
thus adds Charlie
(as an introducer node, since he was trusted by Alice
) and Eve
(as a normal node).
Similarly, Alice
will send information about Bob
to Charlie
and Eve
. If they trust Alice
as an introducer, a full mesh will be formed.
Note that propagation can be a bit delayed currently, since the information is only sent at connection establishment.