A delivered host knows it is the delivered one
novox/hq 04-ISSUES/163. The host asks after every apply whether a newer host is delivered than the one running, and asked with the link-time version stamp — which every delivered host carries as "development build", because the version comes from where the binary sits now (0142). So a delivered host never matched the newest delivered version, stood aside on every push for ever, and because standing aside cancels the report, the mesh never heard from it again. Measured on two machines: each push produced "host <v> is delivered; standing aside" for the version already running, then "applied, and could not tell the mesh: reporting: context canceled". A machine restarting its host on every push and reporting nothing, reading as healthy. Asked with the running version now. Half of 0142 was applied to the report and the known-good record and not here; this is the other half.
This commit is contained in:
@@ -1054,7 +1054,12 @@ func runLink(ctx context.Context, opts options) error {
|
|||||||
// standing before this machine leaves the one it is on (novox/hq design 28, task 5.2).
|
// standing before this machine leaves the one it is on (novox/hq design 28, task 5.2).
|
||||||
adoptDeliveredMembership(identity.Path(opts.state), &mine, say)
|
adoptDeliveredMembership(identity.Path(opts.state), &mine, say)
|
||||||
|
|
||||||
switch next, waiting, err := upgrade.Successor(upgrade.VersionsDir(""), version); {
|
// Asked with the version this host is RUNNING, read from where it sits — not the link-time
|
||||||
|
// stamp, which every delivered host carries as "development build". Asked with the stamp,
|
||||||
|
// a delivered host never matched the newest delivered version, so it stood aside on every
|
||||||
|
// push for ever, and standing aside cancels the report, so the mesh never heard from it
|
||||||
|
// again (novox/hq 04-ISSUES/163).
|
||||||
|
switch next, waiting, err := upgrade.Successor(upgrade.VersionsDir(""), runningVersion()); {
|
||||||
case err != nil:
|
case err != nil:
|
||||||
// Said, not fatal. A host that cannot read the delivered versions is still running this
|
// Said, not fatal. A host that cannot read the delivered versions is still running this
|
||||||
// machine correctly; what it has lost is the ability to be replaced.
|
// machine correctly; what it has lost is the ability to be replaced.
|
||||||
|
|||||||
Reference in New Issue
Block a user