@@ -120,9 +120,6 @@ func (cr *ChainRouter) Initialize(
120120// Assumes [cr.lock] is held
121121func (cr * ChainRouter ) removeRequest (id ids.ID ) {
122122 delete (cr .requests , id )
123- if len (cr .requests ) == 0 {
124- cr .lastTimeNoOutstanding = cr .clock .Time ()
125- }
126123 cr .metrics .outstandingRequests .Set (float64 (len (cr .requests )))
127124}
128125
@@ -140,8 +137,12 @@ func (cr *ChainRouter) RegisterRequest(
140137) {
141138 uniqueRequestID := createRequestID (validatorID , chainID , requestID )
142139 cr .lock .Lock ()
140+ if len (cr .requests ) == 0 {
141+ cr .lastTimeNoOutstanding = cr .clock .Time ()
142+ }
143143 // Add to the set of unfulfilled requests
144144 cr .requests [uniqueRequestID ] = request {Time : cr .clock .Time (), MsgType : msgType }
145+ cr .metrics .outstandingRequests .Set (float64 (len (cr .requests )))
145146 cr .lock .Unlock ()
146147 // Register a timeout to fire if we don't get a reply in time.
147148 var timeoutHandler func () // Called upon timeout
@@ -760,7 +761,11 @@ func (cr *ChainRouter) HealthCheck() (interface{}, error) {
760761 healthy = healthy && numOutstandingReqs <= cr .healthConfig .MaxOutstandingRequests
761762 details ["outstandingRequests" ] = numOutstandingReqs
762763
763- timeSinceNoOutstandingRequests := cr .clock .Time ().Sub (cr .lastTimeNoOutstanding )
764+ now := cr .clock .Time ()
765+ if numOutstandingReqs == 0 {
766+ cr .lastTimeNoOutstanding = now
767+ }
768+ timeSinceNoOutstandingRequests := now .Sub (cr .lastTimeNoOutstanding )
764769 healthy = healthy && timeSinceNoOutstandingRequests <= cr .healthConfig .MaxTimeSinceNoOutstandingRequests
765770 details ["timeSinceNoOutstandingRequests" ] = timeSinceNoOutstandingRequests .String ()
766771
0 commit comments