MCPcopy
hub / github.com/docker/compose / sortContainers

Method sortContainers

pkg/compose/reconcile.go:793–810  ·  view source on GitHub ↗

sortContainers sorts containers the same way as convergence.go:138-160: obsolete first, then by container number descending, then reversed. mustRecreate is evaluated once per container before sorting to avoid quadratic re-evaluation in the comparator.

(containers []ObservedContainer, service types.ServiceConfig, expectedHash string, parentRecreated bool, policy string)

Source from the content-addressed store, hash-verified

791// mustRecreate is evaluated once per container before sorting to avoid
792// quadratic re-evaluation in the comparator.
793func (r *reconciler) sortContainers(containers []ObservedContainer, service types.ServiceConfig, expectedHash string, parentRecreated bool, policy string) {
794 obsolete := make(map[string]bool, len(containers))
795 for _, oc := range containers {
796 obsolete[oc.ID] = r.mustRecreate(service, expectedHash, parentRecreated, oc, policy)
797 }
798 sort.Slice(containers, func(i, j int) bool {
799 obsi, obsj := obsolete[containers[i].ID], obsolete[containers[j].ID]
800 if obsi != obsj {
801 return obsi // obsolete first
802 }
803 // preserve low container numbers
804 if containers[i].Number != containers[j].Number {
805 return containers[i].Number > containers[j].Number
806 }
807 return containers[i].Summary.Created < containers[j].Summary.Created
808 })
809 slices.Reverse(containers)
810}
811
812// reconcileOrphans plans stop + remove for orphaned containers.
813func (r *reconciler) reconcileOrphans() {

Callers 1

reconcileServiceMethod · 0.95

Calls 1

mustRecreateMethod · 0.95

Tested by

no test coverage detected