Browse Source

fix(store.go) expire should also notify all the watchers under the path

Xiang Li 12 years ago
parent
commit
06473ba6fe
1 changed files with 10 additions and 4 deletions
  1. 10 4
      store/store.go

+ 10 - 4
store/store.go

@@ -512,13 +512,19 @@ func (s *store) DeleteExpiredKeys(cutoff time.Time) {
 			break
 		}
 
-		s.ttlKeyHeap.pop()
-		node.Remove(true, true, nil)
-
 		s.CurrentIndex++
+		e := newEvent(Expire, node.Path, s.CurrentIndex, node.CreatedIndex)
+
+		callback := func(path string) { // notify function
+			// notify the watchers with deleted set true
+			s.WatcherHub.notifyWatchers(e, path, true)
+		}
+
+		s.ttlKeyHeap.pop()
+		node.Remove(true, true, callback)
 
 		s.Stats.Inc(ExpireCount)
-		s.WatcherHub.notify(newEvent(Expire, node.Path, s.CurrentIndex, node.CreatedIndex))
+		s.WatcherHub.notify(e)
 	}
 
 }