Skip to content

Commit 99533b7

Browse files
authored
Merge pull request #178 from opentensor/feat/thewhaleking/additional-debug-logging
Additional Debug Logging
2 parents 18f55d3 + 9f1a549 commit 99533b7

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

async_substrate_interface/async_substrate.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
cast,
2323
)
2424

25+
import websockets.exceptions
2526
from bt_decode import MetadataV15, PortableRegistry, decode as decode_by_type_string
2627
from scalecodec.base import ScaleBytes, ScaleType, RuntimeConfigurationObject
2728
from scalecodec.type_registry import load_type_registry_preset
@@ -600,6 +601,7 @@ async def _cancel(self):
600601

601602
async def connect(self, force=False):
602603
async with self._lock:
604+
logger.debug(f"Websocket connecting to {self.ws_url}")
603605
if self._sending is None or self._sending.empty():
604606
self._sending = asyncio.Queue()
605607
if self._exit_task:
@@ -724,8 +726,10 @@ async def _start_receiving(self, ws: ClientConnection) -> Exception:
724726
if not fut.done():
725727
fut.set_exception(e)
726728
fut.cancel()
729+
elif isinstance(e, websockets.exceptions.ConnectionClosedOK):
730+
logger.debug("Websocket connection closed.")
727731
else:
728-
logger.debug("Timeout occurred. Reconnecting.")
732+
logger.debug(f"Timeout occurred. Reconnecting.")
729733
return e
730734

731735
async def _start_sending(self, ws) -> Exception:
@@ -754,6 +758,8 @@ async def _start_sending(self, ws) -> Exception:
754758
for i in self._received.keys():
755759
self._received[i].set_exception(e)
756760
self._received[i].cancel()
761+
elif isinstance(e, websockets.exceptions.ConnectionClosedOK):
762+
logger.debug("Websocket connection closed.")
757763
else:
758764
logger.debug("Timeout occurred. Reconnecting.")
759765
return e
@@ -2371,6 +2377,9 @@ async def _make_rpc_request(
23712377
for payload in payloads:
23722378
item_id = await ws.send(payload["payload"])
23732379
request_manager.add_request(item_id, payload["id"])
2380+
logger.debug(
2381+
f"Submitted payload ID {payload['id']} with websocket ID {item_id}: {payload}"
2382+
)
23742383

23752384
while True:
23762385
for item_id in request_manager.unresponded():
@@ -2391,6 +2400,10 @@ async def _make_rpc_request(
23912400
)
23922401
subscription_added = True
23932402
except KeyError:
2403+
logger.error(
2404+
f"Error received from subtensor for {item_id}: {response}\n"
2405+
f"Currently received responses: {request_manager.get_results()}"
2406+
)
23942407
raise SubstrateRequestException(str(response))
23952408
(
23962409
decoded_response,
@@ -2407,6 +2420,20 @@ async def _make_rpc_request(
24072420
request_manager.add_response(
24082421
item_id, decoded_response, complete
24092422
)
2423+
if (
2424+
len(stringified_response := str(decoded_response))
2425+
< 2_000
2426+
):
2427+
output_response = stringified_response
2428+
# avoids clogging logs up needlessly (esp for Metadata stuff)
2429+
else:
2430+
output_response = (
2431+
f"{stringified_response[:2_000]} (truncated)"
2432+
)
2433+
logger.debug(
2434+
f"Received response for item ID {item_id}:\n{output_response}\n"
2435+
f"Complete: {complete}"
2436+
)
24102437

24112438
if request_manager.is_complete:
24122439
break

async_substrate_interface/sync_substrate.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,7 @@ def name(self):
632632
def connect(self, init=False):
633633
if init is True:
634634
try:
635+
logger.debug(f"Websocket connecting to {self.chain_endpoint}")
635636
return connect(self.chain_endpoint, max_size=self.ws_max_size)
636637
except (ConnectionError, socket.gaierror) as e:
637638
raise ConnectionError(e)
@@ -640,6 +641,7 @@ def connect(self, init=False):
640641
return self.ws
641642
else:
642643
try:
644+
logger.debug(f"Websocket reconnecting to {self.chain_endpoint}")
643645
self.ws = connect(self.chain_endpoint, max_size=self.ws_max_size)
644646
return self.ws
645647
except (ConnectionError, socket.gaierror) as e:
@@ -1902,6 +1904,9 @@ def _make_rpc_request(
19021904
raw_websocket_logger.debug(f"WEBSOCKET_SEND> {to_send}")
19031905
ws.send(json.dumps(to_send))
19041906
request_manager.add_request(item_id, payload["id"])
1907+
logger.debug(
1908+
f"Submitted payload ID {payload['id']} with websocket ID {item_id}: {payload}"
1909+
)
19051910

19061911
while True:
19071912
try:
@@ -1948,6 +1953,10 @@ def _make_rpc_request(
19481953
subscription_added = True
19491954
except KeyError:
19501955
raise SubstrateRequestException(str(response))
1956+
logger.error(
1957+
f"Error received from subtensor for {item_id}: {response}\n"
1958+
f"Currently received responses: {request_manager.get_results()}"
1959+
)
19511960
decoded_response, complete = self._process_response(
19521961
response,
19531962
item_id,
@@ -1959,6 +1968,17 @@ def _make_rpc_request(
19591968
request_manager.add_response(
19601969
item_id, decoded_response, complete
19611970
)
1971+
if len(stringified_response := str(decoded_response)) < 2_000:
1972+
output_response = stringified_response
1973+
# avoids clogging logs up needlessly (esp for Metadata stuff)
1974+
else:
1975+
output_response = (
1976+
f"{stringified_response[:2_000]} (truncated)"
1977+
)
1978+
logger.debug(
1979+
f"Received response for item ID {item_id}:\n{output_response}\n"
1980+
f"Complete: {complete}"
1981+
)
19621982

19631983
if request_manager.is_complete:
19641984
break

0 commit comments

Comments
 (0)