Merge pull request #811 from MichaelMure/fix-data-race

Michael Muré created

graphql: fix two invalid mutex lock leading to data races

Change summary

api/graphql/models/lazy_bug.go      | 6 +++---
api/graphql/models/lazy_identity.go | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)

Detailed changes

api/graphql/models/lazy_bug.go 🔗

@@ -49,13 +49,13 @@ func NewLazyBug(cache *cache.RepoCache, excerpt *cache.BugExcerpt) *lazyBug {
 }
 
 func (lb *lazyBug) load() error {
+	lb.mu.Lock()
+	defer lb.mu.Unlock()
+
 	if lb.snap != nil {
 		return nil
 	}
 
-	lb.mu.Lock()
-	defer lb.mu.Unlock()
-
 	b, err := lb.cache.ResolveBug(lb.excerpt.Id)
 	if err != nil {
 		return err

api/graphql/models/lazy_identity.go 🔗

@@ -41,13 +41,13 @@ func NewLazyIdentity(cache *cache.RepoCache, excerpt *cache.IdentityExcerpt) *la
 }
 
 func (li *lazyIdentity) load() (*cache.IdentityCache, error) {
+	li.mu.Lock()
+	defer li.mu.Unlock()
+
 	if li.id != nil {
 		return li.id, nil
 	}
 
-	li.mu.Lock()
-	defer li.mu.Unlock()
-
 	id, err := li.cache.ResolveIdentity(li.excerpt.Id)
 	if err != nil {
 		return nil, fmt.Errorf("cache: missing identity %v", li.excerpt.Id)