diff --git a/eth/p2p/rlpx_protocols/whisper/whisper_types.nim b/eth/p2p/rlpx_protocols/whisper/whisper_types.nim index aaa20aa..f990222 100644 --- a/eth/p2p/rlpx_protocols/whisper/whisper_types.nim +++ b/eth/p2p/rlpx_protocols/whisper/whisper_types.nim @@ -17,18 +17,10 @@ import logScope: topics = "whisper_types" -declarePublicCounter valid_envelopes, +declarePublicCounter envelopes_valid, "Received & posted valid envelopes" -declarePublicCounter dropped_benign_duplicate_envelopes, - "Dropped benign duplicate envelopes" -declarePublicCounter dropped_expired_envelopes, - "Dropped envelopes because expired" -declarePublicCounter dropped_from_future_envelopes, - "Dropped envelopes because of future timestamp" -declarePublicCounter dropped_full_queue_new_envelopes, - "New valid envelopes dropped because of full queue" -declarePublicCounter dropped_full_queue_old_envelopes, - "Old valid envelopes dropped because of full queue" +declarePublicCounter envelopes_dropped, + "Dropped envelopes", labels = ["reason"] const flagsLen = 1 ## payload flags field length, bytes @@ -411,15 +403,15 @@ proc decode*(data: openarray[byte], dst = none[PrivateKey](), proc valid*(self: Envelope, now = epochTime()): bool = if self.expiry.float64 < now: # expired - dropped_expired_envelopes.inc() + envelopes_dropped.inc(labelValues = ["expired"]) return false if self.ttl <= 0: # this would invalidate pow calculation - dropped_expired_envelopes.inc() + envelopes_dropped.inc(labelValues = ["expired"]) return false let created = self.expiry - self.ttl if created.float64 > (now + 2.0): # created in the future - dropped_from_future_envelopes.inc() + envelopes_dropped.inc(labelValues = ["future_timestamp"]) return false return true @@ -556,10 +548,10 @@ proc add*(self: var Queue, msg: Message): bool = # check for duplicate before pruning if self.itemHashes.contains(msg.hash): - dropped_benign_duplicate_envelopes.inc() + envelopes_dropped.inc(labelValues = ["benign_duplicate"]) return false else: - valid_envelopes.inc() + envelopes_valid.inc() if self.items.len >= self.capacity: self.prune() # Only prune if needed @@ -570,12 +562,12 @@ proc add*(self: var Queue, msg: Message): bool = if last.pow > msg.pow or (last.pow == msg.pow and last.env.expiry > msg.env.expiry): # The new message has less pow or will expire earlier - drop it - dropped_full_queue_new_envelopes.inc() + envelopes_dropped.inc(labelValues = ["full_queue_new"]) return false self.items.del(self.items.len() - 1) self.itemHashes.excl(last.hash) - dropped_full_queue_old_envelopes.inc() + envelopes_dropped.inc(labelValues = ["full_queue_old"]) self.itemHashes.incl(msg.hash) self.items.insert(msg, self.items.lowerBound(msg, cmpPow)) diff --git a/eth/p2p/rlpx_protocols/whisper_protocol.nim b/eth/p2p/rlpx_protocols/whisper_protocol.nim index 7cf62dc..6daf918 100644 --- a/eth/p2p/rlpx_protocols/whisper_protocol.nim +++ b/eth/p2p/rlpx_protocols/whisper_protocol.nim @@ -42,15 +42,6 @@ export logScope: topics = "whisper" -declarePublicCounter dropped_low_pow_envelopes, - "Dropped envelopes because of too low PoW" -declarePublicCounter dropped_too_large_envelopes, - "Dropped envelopes because larger than maximum allowed size" -declarePublicCounter dropped_bloom_filter_mismatch_envelopes, - "Dropped envelopes because not matching with bloom filter" -declarePublicCounter dropped_duplicate_envelopes, - "Dropped duplicate envelopes" - const defaultQueueCapacity = 2048 whisperVersion* = 6 ## Whisper version. @@ -87,17 +78,17 @@ proc allowed*(msg: Message, config: WhisperConfig): bool = # Check max msg size, already happens in RLPx but there is a specific shh # max msg size which should always be < RLPx max msg size if msg.size > config.maxMsgSize: - dropped_too_large_envelopes.inc() + envelopes_dropped.inc(labelValues = ["too_large"]) warn "Message size too large", size = msg.size return false if msg.pow < config.powRequirement: - dropped_low_pow_envelopes.inc() + envelopes_dropped.inc(labelValues = ["low_pow"]) warn "Message PoW too low", pow = msg.pow, minPow = config.powRequirement return false if not bloomFilterMatch(config.bloom, msg.bloom): - dropped_bloom_filter_mismatch_envelopes.inc() + envelopes_dropped.inc(labelValues = ["bloom_filter_mismatch"]) warn "Message does not match node bloom filter" return false @@ -202,7 +193,7 @@ p2pProtocol Whisper(version = whisperVersion, # this node to a peer and that same message arriving from that peer (after # it was received from another peer) here. if peer.state.received.containsOrIncl(msg.hash): - dropped_duplicate_envelopes.inc() + envelopes_dropped.inc(labelValues = ["duplicate"]) trace "Peer sending duplicate messages", peer, hash = $msg.hash # await peer.disconnect(SubprotocolReason) continue