Drop the plan state from the store and the assignments: migration 0108 and placement-only assignments (release 6, issue 1945 B9, B4)
This commit is contained in:
@@ -37,8 +37,6 @@ type Inventory struct {
|
||||
// chain is the controller's chain on the bus (novox/hq ADR 0408), once attached (UseChain).
|
||||
chain *chain.Chain
|
||||
state *chainState
|
||||
// recorded, when set, takes the durations a save of the chain measures in place of the store: a test with no store.
|
||||
recorded func(context.Context, Duration) error
|
||||
// throwaway is set on an inventory raised for a moment beside the real mesh (the merge gate's): nothing it
|
||||
// composes is to be written to the store or the bus.
|
||||
throwaway bool
|
||||
@@ -73,7 +71,6 @@ func Open(ctx context.Context) (*Inventory, error) {
|
||||
}
|
||||
|
||||
func (i *Inventory) Close() {
|
||||
i.stopViews()
|
||||
i.store.Close()
|
||||
}
|
||||
|
||||
@@ -1283,8 +1280,9 @@ func (i *Inventory) RecordSentUnder(ctx context.Context, node, digest string, bu
|
||||
`update node set sent = $2, sent_at = now(), sent_builds = null, sent_epoch = $3 where id = $1`, node, digest, sentEpoch); err != nil {
|
||||
return err
|
||||
}
|
||||
// What it was sent of each module is the assignments' (SentBuilds); a write of it that fails fails this record.
|
||||
return i.recordRuns(ctx, node, builds, time.Now())
|
||||
// What it was sent of each module is no longer kept in the assignments: they hold placement only (ADR 0539 §12).
|
||||
_ = builds
|
||||
return nil
|
||||
}
|
||||
|
||||
// AwaitingSince is since when a machine has had something waiting for its next send (novox/hq issue
|
||||
@@ -1301,36 +1299,8 @@ func (i *Inventory) AwaitingSince(ctx context.Context, name string) (time.Time,
|
||||
// assigned module and one only pulled in (ADR 0408, issue 1109). Known is false when that was not kept: a machine never sent
|
||||
// anything, or last sent a declaration by hand, which makes every key of it say its commit unknown.
|
||||
func (i *Inventory) SentBuilds(ctx context.Context, name string) (builds map[string]string, known bool, err error) {
|
||||
var sentAt *time.Time
|
||||
err = i.store.Pool().QueryRow(ctx, `select sent_at from node where name = $1`, name).Scan(&sentAt)
|
||||
if errors.Is(err, pgx.ErrNoRows) {
|
||||
return nil, false, nil
|
||||
}
|
||||
if err != nil || sentAt == nil {
|
||||
return nil, false, err
|
||||
}
|
||||
c, err := i.theChain(ctx)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
all, err := c.Assignments.All(ctx)
|
||||
if err != nil {
|
||||
return nil, false, fmt.Errorf("what %s was sent cannot be read from the bus: %w", name, err)
|
||||
}
|
||||
builds = map[string]string{}
|
||||
for _, k := range all {
|
||||
a := k.Value
|
||||
if a.Node != name || !a.Stands() {
|
||||
continue
|
||||
}
|
||||
if !a.SentUnknown.IsZero() {
|
||||
return nil, false, nil
|
||||
}
|
||||
if a.Commit != "" {
|
||||
builds[a.Module] = a.Commit
|
||||
}
|
||||
}
|
||||
return builds, true, nil
|
||||
// Never known: the assignments hold placement only (ADR 0539 §12), and what a machine runs is its have.
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
// RecordSentBusUsers keeps a digest of the bus's user list a machine was just sent, by its name
|
||||
|
||||
Reference in New Issue
Block a user