Skip to content

Commit 2e4a52d

Browse files
authored
Fix poa chains (#22)
1 parent 8f68d4a commit 2e4a52d

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/collectors/evm.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from settings import cfg, logger
22
from web3 import Web3
3+
from web3.exceptions import ExtraDataLengthError
34
import asyncio
45
from helpers import strip_url, check_protocol, generate_labels_from_metadata
56
from 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

Comments
 (0)