taskutil

package
v2.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ActiveDeploymentErrorsByService

func ActiveDeploymentErrorsByService(tasks []swarm.Task) map[string]string

ActiveDeploymentErrorsByService returns serviceID -> error text for every service with a slot whose failure nothing has since undone: an error task newer than that slot's last sign of life, or with no sign of life at all.

A slot shows a sign of life two ways. A task that both wants to run and is running is the rolling-update case — the outgoing generation failed, the old task is still up. A task that ran to completion is the run-to-completion case: a `..._init` service exits 0, is never restarted, and never has a running task for a later attempt to be compared against, so a failure before that success would otherwise be reported forever (PR #633 review).

Only errors within 5 minutes of that service's own newest task are considered, so a rollout that eventually settled stops being news. The window follows the service rather than the cluster: a service that broke weeks ago and has not been rescheduled since is still broken, however busy its neighbours are. When multiple slots error for the same service, the most recent error wins.

func AttemptOrder added in v2.0.1

func AttemptOrder(t swarm.Task) time.Time

AttemptOrder returns the clock that orders one slot's attempts against each other: when swarm created the task. Status.Timestamp answers a different question — when the task last changed state — and the two disagree whenever a finished task's status is touched again afterwards, which is how a service whose newest run succeeded kept reporting an older failure (PR #633 review). The task list sorts by CreatedAt too, so the service row and the rows beneath it cannot contradict each other. Falls back to Status.Timestamp for a task with no creation time.

func IsTerminal added in v2.0.1

func IsTerminal(state string) bool

IsTerminal reports whether a swarm task state means the task is over: it will not run again, and its container has exited if it ever started. The services view reads it to stop showing a container state that has nothing left to say — on a task that is already over, "exited" is not news, and whether the cell can say it at all turns on whether the node has pruned the container yet (issue #616).

func LatestTasksByServiceKey

func LatestTasksByServiceKey(tasks []swarm.Task) []swarm.Task

LatestTasksByServiceKey returns the most relevant task per slot. Tasks that want to be running are preferred over terminal tasks; within the same tier the most recently created task wins — attempt order, the same clock ActiveDeploymentErrorsByService and the task list use, so the two cannot disagree about which attempt is a slot's current one.

func TaskKeyForService

func TaskKeyForService(t swarm.Task) string

TaskKeyForService returns a unique key for a task's slot within its service. For replicated services this is serviceID:slot, for global services serviceID:nodeID.

func TaskRowStyle

func TaskRowStyle(t docker.TaskEntry, base lipgloss.Style) lipgloss.Style

TaskRowStyle tints one task row by what the row is telling the operator, and returns base for a task with nothing to say. Red is kept for a task that went wrong — it failed, was rejected, orphaned, recorded an error, or its healthcheck is failing. A task swarm stopped on purpose gets yellow: that happens on every update, scale-down and node drain, and the container's docker-ps state is "exited" for it exactly as it is for a crash, so the swarm task state is what tells the two apart (issue #601).

base is the caller's normal row style rather than a colour of ours: the three views showing tasks each render an ordinary row in their own colour, and only the two exceptional tints are shared.

func TaskTimestamp

func TaskTimestamp(t swarm.Task) time.Time

TaskTimestamp returns the effective timestamp for a task, falling back to CreatedAt when Status.Timestamp is zero.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL