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
@@ -600,6 +601,7 @@ async def _cancel(self):
600
601
601
602
async def connect (self , force = False ):
602
603
async with self ._lock :
604
+ logger .debug (f"Websocket connecting to { self .ws_url } " )
603
605
if self ._sending is None or self ._sending .empty ():
604
606
self ._sending = asyncio .Queue ()
605
607
if self ._exit_task :
@@ -724,8 +726,10 @@ async def _start_receiving(self, ws: ClientConnection) -> Exception:
724
726
if not fut .done ():
725
727
fut .set_exception (e )
726
728
fut .cancel ()
729
+ elif isinstance (e , websockets .exceptions .ConnectionClosedOK ):
730
+ logger .debug ("Websocket connection closed." )
727
731
else :
728
- logger .debug ("Timeout occurred. Reconnecting." )
732
+ logger .debug (f "Timeout occurred. Reconnecting." )
729
733
return e
730
734
731
735
async def _start_sending (self , ws ) -> Exception :
@@ -754,6 +758,8 @@ async def _start_sending(self, ws) -> Exception:
754
758
for i in self ._received .keys ():
755
759
self ._received [i ].set_exception (e )
756
760
self ._received [i ].cancel ()
761
+ elif isinstance (e , websockets .exceptions .ConnectionClosedOK ):
762
+ logger .debug ("Websocket connection closed." )
757
763
else :
758
764
logger .debug ("Timeout occurred. Reconnecting." )
759
765
return e
@@ -2371,6 +2377,9 @@ async def _make_rpc_request(
2371
2377
for payload in payloads :
2372
2378
item_id = await ws .send (payload ["payload" ])
2373
2379
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
+ )
2374
2383
2375
2384
while True :
2376
2385
for item_id in request_manager .unresponded ():
@@ -2391,6 +2400,10 @@ async def _make_rpc_request(
2391
2400
)
2392
2401
subscription_added = True
2393
2402
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
+ )
2394
2407
raise SubstrateRequestException (str (response ))
2395
2408
(
2396
2409
decoded_response ,
@@ -2407,6 +2420,20 @@ async def _make_rpc_request(
2407
2420
request_manager .add_response (
2408
2421
item_id , decoded_response , complete
2409
2422
)
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
+ )
2410
2437
2411
2438
if request_manager .is_complete :
2412
2439
break
0 commit comments