diff --git a/internal/federation/federatingdb/lock.go b/internal/federation/federatingdb/lock.go index 22f2bb77a..4609cd99e 100644 --- a/internal/federation/federatingdb/lock.go +++ b/internal/federation/federatingdb/lock.go @@ -52,6 +52,7 @@ func (f *federatingDB) Lock(c context.Context, id *url.URL) error { // Acquire map lock f.mutex.Lock() + defer f.mutex.Unlock() // Get mutex, or create new mu, ok := f.locks[idStr] @@ -63,8 +64,7 @@ func (f *federatingDB) Lock(c context.Context, id *url.URL) error { f.locks[idStr] = mu } - // Unlock map, acquire mutex lock - f.mutex.Unlock() + // Lock the mutex mu.Lock() return nil } @@ -81,13 +81,13 @@ func (f *federatingDB) Unlock(c context.Context, id *url.URL) error { } idStr := id.String() - // Check map for mutex + // Acquire map lock f.mutex.Lock() - mu, ok := f.locks[idStr] - f.mutex.Unlock() + defer f.mutex.Unlock() + mu, ok := f.locks[idStr] if !ok { - return errors.New("missing an id in unlock") + return errors.New("Unlock: missing an id in unlock") } // Unlock the mutex