A container's mesh names are part of what it is
A container resolves every machine and public name through the entries it is given when it is created, and nothing re-reads them. The host compared everything about a container except those, so one whose image and files never changed was left alone holding an overlay address five days out of date — it restarted 2286 times against a database it could no longer find, and the mesh reported the machine as doing what it was told (novox/hq 04-ISSUES/135, the same fault as 045 in the field left out). Sorted, so the digest does not move for a reordering nobody made. The first apply after this recreates every container that carries mesh names, once.
This commit is contained in:
@@ -1501,6 +1501,20 @@ func containerSpecReading(r *declaration.Container, declares, reads map[string]s
|
||||
for _, a := range r.Args {
|
||||
b.WriteString("arg " + a + "\n")
|
||||
}
|
||||
// **The mesh's names are part of what a container is** (novox/hq 04-ISSUES/135). A container
|
||||
// resolves every other machine and every public name through the entries the mesh gives it at
|
||||
// creation, and nothing re-reads them afterwards — so a container left alone when the roster
|
||||
// moved is one that cannot reach anything by name, for ever, while every check reports it
|
||||
// running. That is exactly what happened when this mesh's overlay range changed: one container
|
||||
// whose image and files never changed kept an address five days out of date and restarted
|
||||
// 2286 times against a database it could no longer find.
|
||||
//
|
||||
// Sorted, so the digest does not move for a reordering nobody made.
|
||||
hosts := append([]string(nil), r.Hosts...)
|
||||
sort.Strings(hosts)
|
||||
for _, h := range hosts {
|
||||
b.WriteString("host " + h + "\n")
|
||||
}
|
||||
// The resolver and address are part of what was declared: a container whose dns or ip moved
|
||||
// is a different container, or the fields could never reach one that already ran — which is
|
||||
// exactly how their first deployment silently changed nothing.
|
||||
|
||||
Reference in New Issue
Block a user