Merge pull request #5849 from kzys/lock-error-2
content: return the error with its timestamp
This commit is contained in:
commit
4c7338aa64
@ -41,7 +41,13 @@ func tryLock(ref string) error {
|
|||||||
defer locksMu.Unlock()
|
defer locksMu.Unlock()
|
||||||
|
|
||||||
if v, ok := locks[ref]; ok {
|
if v, ok := locks[ref]; ok {
|
||||||
return errors.Wrapf(errdefs.ErrUnavailable, "ref %s locked since %s", ref, v.since)
|
// Returning the duration may help developers distinguish dead locks (long duration) from
|
||||||
|
// lock contentions (short duration).
|
||||||
|
now := time.Now()
|
||||||
|
return errors.Wrapf(
|
||||||
|
errdefs.ErrUnavailable,
|
||||||
|
"ref %s locked for %s (since %s)", ref, now.Sub(v.since), v.since,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
locks[ref] = &lock{time.Now()}
|
locks[ref] = &lock{time.Now()}
|
||||||
|
@ -28,5 +28,5 @@ func TestTryLock(t *testing.T) {
|
|||||||
defer unlock("testref")
|
defer unlock("testref")
|
||||||
|
|
||||||
err = tryLock("testref")
|
err = tryLock("testref")
|
||||||
assert.ErrorContains(t, err, "ref testref locked since ")
|
assert.ErrorContains(t, err, "ref testref locked for ")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user