Merge pull request #5849 from kzys/lock-error-2

content: return the error with its timestamp
This commit is contained in:
Derek McGowan 2021-08-10 14:39:07 -07:00 committed by GitHub
commit 4c7338aa64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

View File

@ -41,7 +41,13 @@ func tryLock(ref string) error {
defer locksMu.Unlock()
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()}

View File

@ -28,5 +28,5 @@ func TestTryLock(t *testing.T) {
defer unlock("testref")
err = tryLock("testref")
assert.ErrorContains(t, err, "ref testref locked since ")
assert.ErrorContains(t, err, "ref testref locked for ")
}