11from settings import cfg , logger
22from web3 import Web3
3+ from web3 .exceptions import ExtraDataLengthError
34import asyncio
45from helpers import strip_url , check_protocol , generate_labels_from_metadata
56from collectors .ws import websocket_collector
@@ -23,22 +24,28 @@ def __init__(self, rpc_metadata):
2324 })
2425 self .ws_collector .setDaemon (True )
2526 self .ws_collector .start ()
27+ self .record_difficulty = True
2628
2729 else :
2830 logger .error ("Please provide wss/ws endpoint for {}" .format (strip_url (self .url )))
2931 exit (1 )
3032
3133 def probe (self ) -> results :
32- results .register (self .url , self .labels_values )
3334 try :
3435 if self .client .isConnected ():
36+ results .register (self .url , self .labels_values )
3537 results .record_health (self .url , True )
3638 results .record_head_count (self .url , self .ws_collector .message_counter )
3739 results .record_disconnects (self .url , self .ws_collector .disconnects_counter )
3840 results .record_latency (self .url , self .ws_collector .get_latency ())
3941 results .record_block_height (self .url , self .client .eth .block_number )
40- results .record_total_difficulty (self .url , self .client .eth .get_block ('latest' )['totalDifficulty' ])
41- results .record_difficulty (self .url , self .client .eth .get_block ('latest' )['difficulty' ])
42+ try :
43+ if self .record_difficulty :
44+ results .record_total_difficulty (self .url , self .client .eth .get_block ('latest' )['totalDifficulty' ])
45+ results .record_difficulty (self .url , self .client .eth .get_block ('latest' )['difficulty' ])
46+ except ExtraDataLengthError :
47+ logger .info ("It looks like this is a POA chain, and does not use difficulty anymore. Collector will ignore difficulty metric from this point on" )
48+ self .record_difficulty = False
4249 results .record_gas_price (self .url , self .client .eth .gas_price )
4350 results .record_max_priority_fee (self .url , self .client .eth .max_priority_fee )
4451 results .record_client_version (self .url , self .client .clientVersion )
0 commit comments