distribution's program listens on 5100 and the registry container on 5001, so no mapping names the store's port
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 6cf7f67a1dfd on 08fbc51af26f
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 6cf7f67a1dfd on 08fbc51af26f
The composer finds a listen's machine port in a container mapping that names it on either side (MachineSide). The program's listen 5000 matched the registry container's inner 5000 in 127.0.0.1:5001:5000, so the store's address became the container's loopback side and the program's own port was never opened: the move to 83cd1a3d on 2026-11-08 23:25 UTC cut the artifact store off (issue 1966 note 109). The program now binds 5100, where every machine fetches (the artifact-store alias and the seats' reach agree), and the container serves 5001 inside and out. A row holds that no container names 5100. Undo: revert this commit. Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
This commit is contained in:
@@ -17,7 +17,7 @@ func Health(front Catalog, finding func(kind, subject, words string, raised bool
|
||||
for _, seat := range Seats {
|
||||
got, err := front.Versions(ProbeName)
|
||||
if err != nil {
|
||||
words := fmt.Sprintf("the store's read side does not answer %s's versions through distribution's program (port 5000): %v; is the program distribution running?", seat, err)
|
||||
words := fmt.Sprintf("the store's read side does not answer %s's versions through distribution's program (port 5100): %v; is the program distribution running?", seat, err)
|
||||
if finding != nil {
|
||||
finding(FindingReadSide, seat, words, true)
|
||||
}
|
||||
|
||||
@@ -869,7 +869,7 @@ func TestTheHolderOfTheTwoImageSeats(t *testing.T) {
|
||||
switch r["id"] {
|
||||
case "store":
|
||||
store = i
|
||||
if ports, _ := r["ports"].([]any); len(ports) != 1 || ports[0] != "127.0.0.1:5001:5000" {
|
||||
if ports, _ := r["ports"].([]any); len(ports) != 1 || ports[0] != "127.0.0.1:5001:5001" {
|
||||
t.Errorf("the store's ports = %v, want the loopback only", r["ports"])
|
||||
}
|
||||
// The check of another kind beside the program's tool (ADR 0227 rule 8, ADR 0240 rule 2; the operator,
|
||||
@@ -887,6 +887,15 @@ func TestTheHolderOfTheTwoImageSeats(t *testing.T) {
|
||||
if store < 0 || program < 0 || store > program {
|
||||
t.Errorf("store at %d, program at %d: want the store listed first", store, program)
|
||||
}
|
||||
// The store's address is the listen registry where the machine put it (ADR 0632 §1), and the program binds it
|
||||
// itself: no container's mapping may name its port on either side, or the composer reads that mapping's loopback
|
||||
// side as the address (the move of 2026-11-08 23:25 UTC cut the store off so; issue 1966 note 109).
|
||||
if len(m.Listens) != 1 || m.Listens[0].Port != 5100 {
|
||||
t.Fatalf("listens = %+v, want registry on 5100, where every machine fetches", m.Listens)
|
||||
}
|
||||
if at, mayAssign := m.MachineSide(5100); at != 5100 || mayAssign {
|
||||
t.Errorf("the machine side of 5100 = %d (may assign %v), want 5100 bound by the program, named by no container", at, mayAssign)
|
||||
}
|
||||
// Running review F2: incoming asks the bus 8 GiB, the most the objects template allows, equal to IncomingCap
|
||||
// (said only where no binding is read); transfers keeps for good, the holder dropping an idle one by its key
|
||||
// in idle, a state of keys with their own time to live.
|
||||
|
||||
Reference in New Issue
Block a user