refactor: move StopGracePeriod from ServiceSpec to ContainerSpec

This commit is contained in:
Pasha Sviderski
2026-03-24 18:41:01 +10:00
parent ada9bec2d4
commit 30bcb021d2
4 changed files with 14 additions and 14 deletions
+3 -3
View File
@@ -69,9 +69,6 @@ type ServiceSpec struct {
Ports []PortSpec
// Replicas is the number of containers to run for the service. Only valid for a replicated service.
Replicas uint `json:",omitempty"`
// StopGracePeriod is how long to wait after SIGTERM before sending SIGKILL when stopping a container.
// Default is 10 seconds if not specified.
StopGracePeriod *time.Duration `json:",omitempty"`
// UpdateConfig configures how the service is updated during a deployment.
UpdateConfig UpdateConfig
// Volumes is list of data volumes that can be mounted into the container.
@@ -265,6 +262,9 @@ type ContainerSpec struct {
PullPolicy string
// Resource allocation for the container.
Resources ContainerResources
// StopGracePeriod is how long to wait after SIGTERM before sending SIGKILL when stopping the container.
// Default is 10 seconds if not specified.
StopGracePeriod *time.Duration `json:",omitempty"`
// Namespaced kernel parameters to be set in the container.
Sysctls map[string]string
// User overrides the default user of the image used to run the container. Format: user|UID[:group|GID].
+1 -1
View File
@@ -88,7 +88,7 @@ func ServiceSpecFromCompose(project *types.Project, serviceName string) (api.Ser
if service.StopGracePeriod != nil {
d := time.Duration(*service.StopGracePeriod)
spec.StopGracePeriod = &d
spec.Container.StopGracePeriod = &d
}
if service.Scale != nil {
+2 -2
View File
@@ -147,6 +147,7 @@ func TestServiceSpecFromCompose(t *testing.T) {
{Count: -1, Capabilities: [][]string{{"gpu"}}},
},
},
StopGracePeriod: new(30 * time.Second),
Sysctls: map[string]string{
"net.ipv4.ip_forward": "1",
},
@@ -207,8 +208,7 @@ func TestServiceSpecFromCompose(t *testing.T) {
Placement: api.Placement{
Machines: []string{"machine-1", "machine-2"},
},
Replicas: 3,
StopGracePeriod: api.AsPtr(30 * time.Second),
Replicas: 3,
UpdateConfig: api.UpdateConfig{
Order: api.UpdateOrderStopFirst,
MonitorPeriod: &api.DefaultHealthMonitorPeriod,
+8 -8
View File
@@ -183,7 +183,7 @@ func (s *RollingStrategy) planReplicated(svc *api.Service, spec api.ServiceSpec)
OldContainer: ctr,
Order: order,
SkipHealthMonitor: s.SkipHealthMonitor,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
@@ -194,7 +194,7 @@ func (s *RollingStrategy) planReplicated(svc *api.Service, spec api.ServiceSpec)
MachineID: mid,
MachineName: machineNames[mid],
Container: c,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
}
@@ -260,7 +260,7 @@ func (s *RollingStrategy) planGlobal(svc *api.Service, spec api.ServiceSpec) (Se
MachineID: c.MachineID,
MachineName: machineNames[c.MachineID],
Container: c.Container,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
}
@@ -318,7 +318,7 @@ func reconcileGlobalContainer(
MachineID: old.MachineID,
MachineName: machine.Name,
Container: old.Container,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
break
@@ -354,7 +354,7 @@ func reconcileGlobalContainer(
ContainerID: c.Container.ID,
MachineID: machine.Id,
MachineName: machine.Name,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
}
@@ -369,7 +369,7 @@ func reconcileGlobalContainer(
OldContainer: containerToReplace.Container,
Order: order,
SkipHealthMonitor: skipHealthCheck,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
// Remove any other containers (there shouldn't be any in normal operation).
@@ -381,7 +381,7 @@ func reconcileGlobalContainer(
MachineID: c.MachineID,
MachineName: machine.Name,
Container: c.Container,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
} else {
@@ -398,7 +398,7 @@ func reconcileGlobalContainer(
MachineID: c.MachineID,
MachineName: machine.Name,
Container: c.Container,
StopGracePeriod: spec.StopGracePeriod,
StopGracePeriod: spec.Container.StopGracePeriod,
})
}
}