internal/outcome: improve doc comments
All checks were successful
Test / Create distribution (push) Successful in 1m2s
Test / Sandbox (push) Successful in 2m44s
Test / Hakurei (push) Successful in 4m21s
Test / ShareFS (push) Successful in 4m49s
Test / Hakurei (race detector) (push) Successful in 3m42s
Test / Sandbox (race detector) (push) Successful in 2m24s
Test / Flake checks (push) Successful in 1m17s
All checks were successful
Test / Create distribution (push) Successful in 1m2s
Test / Sandbox (push) Successful in 2m44s
Test / Hakurei (push) Successful in 4m21s
Test / ShareFS (push) Successful in 4m49s
Test / Hakurei (race detector) (push) Successful in 3m42s
Test / Sandbox (race detector) (push) Successful in 2m24s
Test / Flake checks (push) Successful in 1m17s
This improves readability on smaller displays. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -30,7 +30,9 @@ const (
|
||||
)
|
||||
|
||||
// NewStore returns the address of a new instance of [store.Store].
|
||||
func NewStore(sc *hst.Paths) *store.Store { return store.New(sc.SharePath.Append("state")) }
|
||||
func NewStore(sc *hst.Paths) *store.Store {
|
||||
return store.New(sc.SharePath.Append("state"))
|
||||
}
|
||||
|
||||
// main carries out outcome and terminates. main does not return.
|
||||
func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
@@ -116,7 +118,11 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
processStatePrev, processStateCur = processStateCur, processState
|
||||
|
||||
if !processTime.IsZero() && processStatePrev != processLifecycle {
|
||||
msg.Verbosef("state %d took %.2f ms", processStatePrev, float64(time.Since(processTime).Nanoseconds())/1e6)
|
||||
msg.Verbosef(
|
||||
"state %d took %.2f ms",
|
||||
processStatePrev,
|
||||
float64(time.Since(processTime).Nanoseconds())/1e6,
|
||||
)
|
||||
}
|
||||
processTime = time.Now()
|
||||
|
||||
@@ -141,7 +147,10 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
|
||||
case processCommit:
|
||||
if isBeforeRevert {
|
||||
perrorFatal(newWithMessage("invalid transition to commit state"), "commit", processLifecycle)
|
||||
perrorFatal(
|
||||
newWithMessage("invalid transition to commit state"),
|
||||
"commit", processLifecycle,
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -238,15 +247,26 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
|
||||
case <-func() chan struct{} {
|
||||
w := make(chan struct{})
|
||||
// this ties processLifecycle to ctx with the additional compensated timeout duration
|
||||
// to allow transition to the next state on a locked up shim
|
||||
go func() { <-ctx.Done(); time.Sleep(k.state.Shim.WaitDelay + shimWaitTimeout); close(w) }()
|
||||
// This ties processLifecycle to ctx with the additional
|
||||
// compensated timeout duration to allow transition to the next
|
||||
// state on a locked up shim.
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
time.Sleep(k.state.Shim.WaitDelay + shimWaitTimeout)
|
||||
close(w)
|
||||
}()
|
||||
return w
|
||||
}():
|
||||
// this is only reachable when wait did not return within shimWaitTimeout, after its WaitDelay has elapsed.
|
||||
// This is different from the container failing to terminate within its timeout period, as that is enforced
|
||||
// by the shim. This path is instead reached when there is a lockup in shim preventing it from completing.
|
||||
msg.GetLogger().Printf("process %d did not terminate", shimCmd.Process.Pid)
|
||||
// This is only reachable when wait did not return within
|
||||
// shimWaitTimeout, after its WaitDelay has elapsed. This is
|
||||
// different from the container failing to terminate within its
|
||||
// timeout period, as that is enforced by the shim. This path is
|
||||
// instead reached when there is a lockup in shim preventing it
|
||||
// from completing.
|
||||
msg.GetLogger().Printf(
|
||||
"process %d did not terminate",
|
||||
shimCmd.Process.Pid,
|
||||
)
|
||||
}
|
||||
msg.Resume()
|
||||
|
||||
@@ -271,8 +291,8 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
ec := system.Process
|
||||
|
||||
if entries, _, err := handle.Entries(); err != nil {
|
||||
// it is impossible to continue from this point,
|
||||
// per-process state will be reverted to limit damage
|
||||
// it is impossible to continue from this point, per-process
|
||||
// state will be reverted to limit damage
|
||||
perror(err, "read store segment entries")
|
||||
} else {
|
||||
// accumulate enablements of remaining instances
|
||||
@@ -295,7 +315,10 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
if n == 0 {
|
||||
ec |= system.User
|
||||
} else {
|
||||
msg.Verbosef("found %d instances, cleaning up without user-scoped operations", n)
|
||||
msg.Verbosef(
|
||||
"found %d instances, cleaning up without user-scoped operations",
|
||||
n,
|
||||
)
|
||||
}
|
||||
ec |= rt ^ (hst.EWayland | hst.EX11 | hst.EDBus | hst.EPulse)
|
||||
if msg.IsVerbose() {
|
||||
@@ -335,7 +358,9 @@ func (k *outcome) main(msg message.Msg, identifierFd int) {
|
||||
|
||||
// start starts the shim via cmd/hsu.
|
||||
//
|
||||
// If successful, a [time.Time] value for [hst.State] is stored in the value pointed to by startTime.
|
||||
// If successful, a [time.Time] value for [hst.State] is stored in the value
|
||||
// pointed to by startTime.
|
||||
//
|
||||
// The resulting [exec.Cmd] and write end of the shim setup pipe is returned.
|
||||
func (k *outcome) start(ctx context.Context, msg message.Msg,
|
||||
hsuPath *check.Absolute,
|
||||
|
||||
Reference in New Issue
Block a user