Merge pull request 'catalogue: say in the comments that a package may be declared by several modules (issue 628)' (#300) from fix/628-packages-are-shared into main
This commit was merged in pull request #300.
This commit is contained in:
@@ -203,8 +203,9 @@ func seatDependenciesOnAssign(ctx context.Context, open *stores, node string, mo
|
|||||||
if _, err := catalogue.AssignRefusal(shelf, node, assigned, adding); err != nil {
|
if _, err := catalogue.AssignRefusal(shelf, node, assigned, adding); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
// Two modules declaring one package, path or unit is refused before anything is recorded
|
// Two modules declaring one path or unit, or one package present and absent, is refused before anything
|
||||||
// (novox/hq ADR 0210, 04-ISSUES/235): kept, the node would not resolve until one came off again.
|
// is recorded (novox/hq ADR 0210, ADR 0303, 04-ISSUES/235): kept, the node would not resolve until one came
|
||||||
|
// off again. Two modules declaring one package present is not a collision (ADR 0303, issue 628).
|
||||||
if err := catalogue.CollisionRefusal(shelf, node, assigned, adding); err != nil {
|
if err := catalogue.CollisionRefusal(shelf, node, assigned, adding); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2551,8 +2551,8 @@ func onlyGroups(r map[string]any) bool {
|
|||||||
|
|
||||||
// generatedHere is what each computed module's generator answers for this machine, by module —
|
// generatedHere is what each computed module's generator answers for this machine, by module —
|
||||||
// absent for a module whose machine is not yet part of what it generates — held to the rule every
|
// absent for a module whose machine is not yet part of what it generates — held to the rule every
|
||||||
// module is held to: no two modules on a machine declare one path, unit, name or package (novox/hq
|
// module is held to: no two modules on a machine declare one path, unit or name, nor one package present
|
||||||
// issue 190, step 5; ADR 0222).
|
// and absent (novox/hq issue 190, step 5; ADR 0222, ADR 0303).
|
||||||
//
|
//
|
||||||
// Resolution checks the catalogue's manifests, and a computed module's manifest has none of the
|
// Resolution checks the catalogue's manifests, and a computed module's manifest has none of the
|
||||||
// resources it will declare — they exist only once its generator has answered for this machine,
|
// resources it will declare — they exist only once its generator has answered for this machine,
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// novox/hq issue 190, step 5 (ADR 0222): what the mesh computes for a module is held to the rule
|
// novox/hq issue 190, step 5 (ADR 0222): what the mesh computes for a module is held to the rule
|
||||||
// every module is — no two modules on a machine declare one path, unit, name or package. The
|
// every module is — no two modules on a machine declare one path, unit or name (a package may be declared by
|
||||||
|
// several, novox/hq ADR 0303). The
|
||||||
// private network once declared the container runtime's file and service beside the runtime's own
|
// private network once declared the container runtime's file and service beside the runtime's own
|
||||||
// module, and nothing refused it, because the collision check only ever saw catalogue manifests.
|
// module, and nothing refused it, because the collision check only ever saw catalogue manifests.
|
||||||
|
|
||||||
|
|||||||
@@ -331,12 +331,13 @@ func UnassignRefusal(catalogue map[string]Manifest, node string, assigned, remov
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CollisionRefusal is why assigning `adding` beside `assigned` is refused for what two modules
|
// CollisionRefusal is why assigning `adding` beside `assigned` is refused for what two modules
|
||||||
// would both declare, or nothing (novox/hq ADR 0210 §1, 04-ISSUES/235).
|
// would both declare, or nothing (novox/hq ADR 0210 §1, 04-ISSUES/235): one path, unit or name, or a package one
|
||||||
|
// declares present and another absent. A package several modules declare present is no collision (ADR 0303).
|
||||||
//
|
//
|
||||||
// **Refused, not kept like an unresolved provision.** An assignment is otherwise kept when the
|
// **Refused, not kept like an unresolved provision.** An assignment is otherwise kept when the
|
||||||
// node does not resolve, because assignment is not an ordering: a consumer's provider can follow.
|
// node does not resolve, because assignment is not an ordering: a consumer's provider can follow.
|
||||||
// A collision is not an order anything can complete — no further assignment makes two owners of one
|
// A collision is not an order anything can complete — no further assignment makes two owners of one
|
||||||
// package one owner — and kept, it leaves the node unresolvable, so the next push of anything drops
|
// file one owner — and kept, it leaves the node unresolvable, so the next push of anything drops
|
||||||
// it from the mesh. Only collisions involving a module being added are refused; one already on the
|
// it from the mesh. Only collisions involving a module being added are refused; one already on the
|
||||||
// node is `status`'s, and refusing an unrelated assignment for it would block its own remedy.
|
// node is `status`'s, and refusing an unrelated assignment for it would block its own remedy.
|
||||||
func CollisionRefusal(catalogue map[string]Manifest, node string, assigned, adding []string) error {
|
func CollisionRefusal(catalogue map[string]Manifest, node string, assigned, adding []string) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user