A machine says which links face outside without being asked
The mesh composes no filter for a machine that has not said (ADR 0140), and a converged machine only speaks unasked when its adoption fingerprint changes. The links were not in that fingerprint, so a machine that had just learnt to say could only speak when a declaration arrived — and a declaration cannot be composed until it has spoken. A machine waiting for a push that is waiting for the machine. Found before it bit: every machine in this mesh is in exactly that state right now, having just been given a host that reports the links to a control plane that does not yet read them.
This commit is contained in:
@@ -1077,7 +1077,12 @@ type adoptionWatch struct {
|
||||
// is what the controller previews a flip from, so a port that opens or closes between deliveries
|
||||
// must reach it too (novox/hq ADR 0100).
|
||||
func adoptionFingerprint(r link.Report) string {
|
||||
parts := []string{"firewall=" + r.Firewall}
|
||||
// **Which links face outside is part of it, though it is not about adoption** (novox/hq ADR
|
||||
// 0140). The mesh composes no filter for a machine that has not said, so a machine whose links
|
||||
// changed — or which has only just learnt to say — has to say so without being asked. Left out,
|
||||
// it could only speak when a declaration arrived, and a declaration cannot be composed until it
|
||||
// has spoken: a machine waiting for a push that is waiting for the machine.
|
||||
parts := []string{"firewall=" + r.Firewall, "outward=" + strings.Join(r.Outward, ",")}
|
||||
for _, h := range r.Held {
|
||||
parts = append(parts, "held "+h.ID+"="+h.Changed)
|
||||
}
|
||||
@@ -1085,7 +1090,7 @@ func adoptionFingerprint(r link.Report) string {
|
||||
parts = append(parts, fmt.Sprintf("reach %s %s:%d %s %v %d", reach.Protocol, reach.Address,
|
||||
reach.Port, reach.By, reach.Published, reach.ContainerPort))
|
||||
}
|
||||
sort.Strings(parts[1:])
|
||||
sort.Strings(parts[2:])
|
||||
return strings.Join(parts, "\n")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user