forked from quic-go/quic-go
periodically log the number of tracked items in the packet handler map
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user