diff --git a/p2p/tracker/tracker.go b/p2p/tracker/tracker.go
index 19852ad6abf2f4951a8cceef77da515f52c5df2f..69a49087e2c4423e268ad1fd184dbb2deb3aa3c6 100644
--- a/p2p/tracker/tracker.go
+++ b/p2p/tracker/tracker.go
@@ -188,8 +188,9 @@ func (t *Tracker) Fulfil(peer string, version uint, code uint64, id uint64) {
 	t.expire.Remove(req.expire)
 	delete(t.pending, id)
 	if req.expire.Prev() == nil {
-		t.wake.Stop()
-		t.schedule()
+		if t.wake.Stop() {
+			t.schedule()
+		}
 	}
 	g := fmt.Sprintf("%s/%s/%d/%#02x", trackedGaugeName, t.protocol, req.version, req.reqCode)
 	metrics.GetOrRegisterGauge(g, nil).Dec(1)