weaveworks / mesh

A tool for building distributed applications.
Apache License 2.0
889 stars 107 forks source link

Expose and restore indirect peers #46

Closed awh closed 6 years ago

awh commented 8 years ago

In order to implement weaveworks/weave#2187 we need a way to expose and restore 'indirect peers' - targets that have been added via peer discovery instead of InitiateConnections.

weaveworks/weave#2317 implements the changes in the router that depend on this modification.

This is pretty grotty, and really only meant as a strawman with the hope someone else can think of a cleaner way. Some possibilities:

  1. Have additional methods specifically to extract and restore indirect peers (meh)
  2. Modify InitiateConnections and Targets so that they take/return a slice of a new struct which has a type field (e.g. direct or indirect) instead of string
  3. Have some kind of memento API that takes/returns an opaque interface{} blob that can be saved and restored by an external agent (this might complicate matters if the router ever has to do a schema upgrade of the datastore)
  4. Inject the ConnectionMaker with some kind of interface that it uses at appropriate points to a) get a set of direct/indirect peers (e.g. in newConnectionMaker) and b) notify when they have changed (e.g. on InitiateConnections/ForgetConnections or when new targets are added through discovery)

Thoughts?

awh commented 8 years ago

Tests are failing because coreos/etcd/storage got renamed.

peterbourgon commented 8 years ago

LGTM

bboreham commented 6 years ago

Going to close this because we never really pursued it.