periodically log the number of tracked items in the packet handler map

This commit is contained in:
Marten Seemann
2019-11-03 11:55:37 +07:00
parent 59cf1e88a7
commit 441b1ed84b

View File

@@ -61,9 +61,40 @@ func newPacketHandlerMap(
logger: logger,
}
go m.listen()
if logger.Debug() {
go m.logUsage()
}
return m
}
func (h *packetHandlerMap) logUsage() {
ticker := time.NewTicker(2 * time.Second)
var printedZero bool
for {
select {
case <-h.listening:
return
case <-ticker.C:
}
h.mutex.Lock()
numHandlers := len(h.handlers)
numTokens := len(h.resetTokens)
h.mutex.Unlock()
// If the number tracked handlers and tokens is zero, only print it a single time.
hasZero := numHandlers == 0 && numTokens == 0
if !hasZero || (hasZero && !printedZero) {
h.logger.Debugf("Tracking %d connection IDs and %d reset tokens.\n", numHandlers, numTokens)
printedZero = false
if hasZero {
printedZero = true
}
}
}
}
func (h *packetHandlerMap) Add(id protocol.ConnectionID, handler packetHandler) {
h.mutex.Lock()
h.handlers[string(id)] = handler