internal/outcome/process: nil-safe unlock when failing to lock
All checks were successful
Test / Create distribution (push) Successful in 32s
Test / Hpkg (push) Successful in 4m13s
Test / Sandbox (push) Successful in 2m10s
Test / Hakurei (push) Successful in 3m9s
Test / Sandbox (race detector) (push) Successful in 4m7s
Test / Hakurei (race detector) (push) Successful in 4m57s
Test / Flake checks (push) Successful in 1m26s
All checks were successful
Test / Create distribution (push) Successful in 32s
Test / Hpkg (push) Successful in 4m13s
Test / Sandbox (push) Successful in 2m10s
Test / Hakurei (push) Successful in 3m9s
Test / Sandbox (race detector) (push) Successful in 4m7s
Test / Hakurei (race detector) (push) Successful in 4m57s
Test / Flake checks (push) Successful in 1m26s
This also prints a debug message which might be useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
e7161f8e61
commit
f5274067f6
@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"errors"
|
"errors"
|
||||||
"iter"
|
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -237,13 +236,15 @@ func (k *outcome) main(msg message.Msg) {
|
|||||||
// this state transition to processFinal only
|
// this state transition to processFinal only
|
||||||
processState = processFinal
|
processState = processFinal
|
||||||
|
|
||||||
unlock, err := handle.Lock()
|
unlock := func() { msg.Verbose("skipping unlock as lock was not successfully acquired") }
|
||||||
if err != nil {
|
if f, err := handle.Lock(); err != nil {
|
||||||
perror(err, "acquire lock on store segment")
|
perror(err, "acquire lock on store segment")
|
||||||
|
} else {
|
||||||
|
unlock = f
|
||||||
}
|
}
|
||||||
|
|
||||||
if entryHandle != nil {
|
if entryHandle != nil {
|
||||||
if err = entryHandle.Destroy(); err != nil {
|
if err := entryHandle.Destroy(); err != nil {
|
||||||
perror(err, "destroy state entry")
|
perror(err, "destroy state entry")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -251,8 +252,7 @@ func (k *outcome) main(msg message.Msg) {
|
|||||||
if isBeforeRevert {
|
if isBeforeRevert {
|
||||||
ec := system.Process
|
ec := system.Process
|
||||||
|
|
||||||
var entries iter.Seq[*store.EntryHandle]
|
if entries, _, err := handle.Entries(); err != nil {
|
||||||
if entries, _, err = handle.Entries(); err != nil {
|
|
||||||
// it is impossible to continue from this point,
|
// it is impossible to continue from this point,
|
||||||
// per-process state will be reverted to limit damage
|
// per-process state will be reverted to limit damage
|
||||||
perror(err, "read store segment entries")
|
perror(err, "read store segment entries")
|
||||||
@ -287,7 +287,7 @@ func (k *outcome) main(msg message.Msg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = k.sys.Revert((*system.Criteria)(&ec)); err != nil {
|
if err := k.sys.Revert((*system.Criteria)(&ec)); err != nil {
|
||||||
var joinError interface {
|
var joinError interface {
|
||||||
Unwrap() []error
|
Unwrap() []error
|
||||||
error
|
error
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user