Two faults found on review #130

Merged
mesh-admin merged 1 commits from fix/review-two-small-faults into main 2026-09-28 14:32:44 +00:00
2 changed files with 10 additions and 14 deletions
+1 -1
View File
@@ -137,7 +137,7 @@ func (r Registry) has(ctx context.Context, url string, accept ...string) (bool,
return false, err
}
for _, media := range accept {
request.Header.Set("Accept", media)
request.Header.Add("Accept", media)
}
response, err := r.client().Do(request)
if err != nil {
+9 -13
View File
@@ -476,7 +476,15 @@ func (s *Server) catchingUp(ctx context.Context, m Control) {
// module's event from a module called "control-plane", which does not exist — so the
// controller's own account refused it, every catalogue that asked what it missed was
// answered with nothing, and its graph kept the gap (found 2026-09-28).
if err := s.bus.PublishSeatEvent(ctx, MeshControllerSeat, KeyBuiltBefore, replayed(a)); err != nil {
body, err := json.Marshal(a)
if err != nil {
// A body that cannot be written is this program's fault, not the bus's, and publishing
// an empty one would put a fact on the mesh that says nothing.
s.log.Printf("cannot re-announce %s at %s: %v", a.Module, short(a.Commit), err)
_ = m.Took()
return
}
if err := s.bus.PublishSeatEvent(ctx, MeshControllerSeat, KeyBuiltBefore, body); err != nil {
// Said and abandoned rather than retried: the catalogue asks again every time it
// starts, and half a graph delivered twice is no better than half delivered once.
s.log.Printf("replaying %s at %s failed, and the rest is abandoned: %v",
@@ -601,15 +609,3 @@ func (s *Server) saysWhatItDid(ctx context.Context, report Report) {
s.log.Printf("could not say that %s %s: %v", report.Node, event, err)
}
}
// replayed is one announcement as the control plane states it. The same body the build machine's
// outcome carries, because what the catalogue does with it is the same.
func replayed(a Announcement) []byte {
raw, err := json.Marshal(a)
if err != nil {
// A body that cannot be marshalled is a programming error, not a bus failure, and an empty
// one is refused by the reader rather than silently taken as an announcement of nothing.
return nil
}
return raw
}