Browse Source

Merge pull request #5404 from gyuho/watch_optimize

mvcc: remove defer in watchable store
Gyu-Ho Lee 9 years ago
parent
commit
8c17674cda
1 changed files with 3 additions and 5 deletions
  1. 3 5
      mvcc/watchable_store.go

+ 3 - 5
mvcc/watchable_store.go

@@ -211,17 +211,15 @@ func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch c
 
 	cancel := cancelFunc(func() {
 		s.mu.Lock()
-		defer s.mu.Unlock()
 		// remove references of the watcher
 		if s.unsynced.delete(wa) {
 			slowWatcherGauge.Dec()
 			watcherGauge.Dec()
-			return
-		}
-
-		if s.synced.delete(wa) {
+		} else if s.synced.delete(wa) {
 			watcherGauge.Dec()
 		}
+		s.mu.Unlock()
+
 		// If we cannot find it, it should have finished watch.
 	})