diff --git a/cmd/mesh-controller/settings_walk.go b/cmd/mesh-controller/settings_walk.go index 8c5acb3b..e5d69db6 100644 --- a/cmd/mesh-controller/settings_walk.go +++ b/cmd/mesh-controller/settings_walk.go @@ -193,12 +193,9 @@ func advanceSettingsWalk(ctx context.Context, open *stores, p *inventory.Plan) ( return failBefore(p, node, "a running module's data would move there — "+ strings.Join(strings.Fields(said.String()), " ")) } + // A build that cannot be kept is refused by the composition above, which is the send's own, and fails the + // walk there: the send flattens its refusals into words, so it is not looked for again here. sent, grants, err := sendJudged(keepingBuildsForSettings(ctx, node), open, node) - if errors.Is(err, errSettingsCannotKeep) { - // It does not clear by itself: tried again on every tick, the walk would stay open and hold the walk - // of waiting builds until a person came. - return failBefore(p, node, err.Error()) - } if err != nil { return false, fmt.Errorf("sending %s %s: %w", node, settingsWalkFor(*s), err) } diff --git a/testdata/store-tests b/testdata/store-tests index bec8145d..8f592653 100644 --- a/testdata/store-tests +++ b/testdata/store-tests @@ -51,3 +51,10 @@ ./internal/inventory TestASharedOwnSecretIssuedOutsideIsNeverMade ./cmd/mesh-controller TestOneAcceptForAProviderIsPlacedForEveryConsumer ./cmd/mesh-controller TestReplay164 +./cmd/mesh-controller TestAnApprovedLayerOpensTheWalkThatSendsIt +./cmd/mesh-controller TestASettingsWalkSendsOneMachineAtATimeEachJudged +./cmd/mesh-controller TestAFailedSettingsWalkStopsAndHoldsNothingBack +./cmd/mesh-controller TestASettingsWalkSendsTheLayerAloneEveryBuildKept +./cmd/mesh-controller TestASettingsWalkStopsBeforeADataMoveAndPassesOverAMachineAway +./cmd/mesh-controller TestACrossingSendSupersedesASettingsGate +./cmd/mesh-controller TestASettingsWalkFailsOnARefusalThatCannotClear