22
22
cast ,
23
23
)
24
24
25
+ import websockets .exceptions
25
26
from bt_decode import MetadataV15 , PortableRegistry , decode as decode_by_type_string
26
27
from scalecodec .base import ScaleBytes , ScaleType , RuntimeConfigurationObject
27
28
from scalecodec .type_registry import load_type_registry_preset
@@ -599,6 +600,7 @@ async def _cancel(self):
599
600
600
601
async def connect (self , force = False ):
601
602
async with self ._lock :
603
+ logger .debug (f"Websocket connecting to { self .ws_url } " )
602
604
if self ._sending is None or self ._sending .empty ():
603
605
self ._sending = asyncio .Queue ()
604
606
if self ._exit_task :
@@ -723,8 +725,10 @@ async def _start_receiving(self, ws: ClientConnection) -> Exception:
723
725
if not fut .done ():
724
726
fut .set_exception (e )
725
727
fut .cancel ()
728
+ elif isinstance (e , websockets .exceptions .ConnectionClosedOK ):
729
+ logger .debug ("Websocket connection closed." )
726
730
else :
727
- logger .debug ("Timeout occurred. Reconnecting." )
731
+ logger .debug (f "Timeout occurred. Reconnecting." )
728
732
return e
729
733
730
734
async def _start_sending (self , ws ) -> Exception :
@@ -753,6 +757,8 @@ async def _start_sending(self, ws) -> Exception:
753
757
for i in self ._received .keys ():
754
758
self ._received [i ].set_exception (e )
755
759
self ._received [i ].cancel ()
760
+ elif isinstance (e , websockets .exceptions .ConnectionClosedOK ):
761
+ logger .debug ("Websocket connection closed." )
756
762
else :
757
763
logger .debug ("Timeout occurred. Reconnecting." )
758
764
return e
@@ -2370,6 +2376,7 @@ async def _make_rpc_request(
2370
2376
for payload in payloads :
2371
2377
item_id = await ws .send (payload ["payload" ])
2372
2378
request_manager .add_request (item_id , payload ["id" ])
2379
+ logger .debug (f"Submitted payload ID { payload ['id' ]} with websocket ID { item_id } : { payload } " )
2373
2380
2374
2381
while True :
2375
2382
for item_id in request_manager .unresponded ():
@@ -2390,6 +2397,10 @@ async def _make_rpc_request(
2390
2397
)
2391
2398
subscription_added = True
2392
2399
except KeyError :
2400
+ logger .error (
2401
+ f"Error received from subtensor for { item_id } : { response } \n "
2402
+ f"Currently received responses: { request_manager .get_results ()} "
2403
+ )
2393
2404
raise SubstrateRequestException (str (response ))
2394
2405
(
2395
2406
decoded_response ,
@@ -2406,6 +2417,15 @@ async def _make_rpc_request(
2406
2417
request_manager .add_response (
2407
2418
item_id , decoded_response , complete
2408
2419
)
2420
+ if len (stringified_response := str (decoded_response )) < 2_000 :
2421
+ output_response = stringified_response
2422
+ # avoids clogging logs up needlessly (esp for Metadata stuff)
2423
+ else :
2424
+ output_response = f"{ stringified_response [:2_000 ]} (truncated)"
2425
+ logger .debug (
2426
+ f"Received response for item ID { item_id } :\n { output_response } \n "
2427
+ f"Complete: { complete } "
2428
+ )
2409
2429
2410
2430
if request_manager .is_complete :
2411
2431
break
0 commit comments