@@ -3670,34 +3670,40 @@ async def query_map(
36703670 self .decode_ss58 ,
36713671 )
36723672 else :
3673- all_responses = []
36743673 page_batches = [
36753674 result_keys [i : i + page_size ]
36763675 for i in range (0 , len (result_keys ), page_size )
36773676 ]
36783677 changes = []
3679- for batch_group in [
3680- # run five concurrent batch pulls; could go higher, but it's good to be a good citizens
3681- # of the ecosystem
3682- page_batches [i : i + 5 ]
3683- for i in range (0 , len (page_batches ), 5 )
3684- ]:
3685- all_responses .extend (
3686- await asyncio .gather (
3687- * [
3688- self .rpc_request (
3689- method = "state_queryStorageAt" ,
3690- params = [batch_keys , block_hash ],
3691- runtime = runtime ,
3692- )
3693- for batch_keys in batch_group
3694- ]
3678+ payloads = []
3679+ for idx , page_batch in enumerate (page_batches ):
3680+ payloads .append (
3681+ self .make_payload (
3682+ str (idx ), "state_queryStorageAt" , [page_batch , block_hash ]
36953683 )
36963684 )
3697- for response in all_responses :
3698- for result_group in response ["result" ]:
3699- changes .extend (result_group ["changes" ])
3700-
3685+ results : RequestResults = await self ._make_rpc_request (
3686+ payloads , runtime = runtime
3687+ )
3688+ for result in results .values ():
3689+ res = result [0 ]
3690+ if "error" in res :
3691+ err_msg = res ["error" ]["message" ]
3692+ if (
3693+ "Client error: Api called for an unknown Block: State already discarded"
3694+ in err_msg
3695+ ):
3696+ bh = err_msg .split ("State already discarded for " )[
3697+ 1
3698+ ].strip ()
3699+ raise StateDiscardedError (bh )
3700+ else :
3701+ raise SubstrateRequestException (err_msg )
3702+ elif "result" not in res :
3703+ raise SubstrateRequestException (res )
3704+ else :
3705+ for result_group in res ["result" ]:
3706+ changes .extend (result_group ["changes" ])
37013707 result = decode_query_map (
37023708 changes ,
37033709 prefix ,
0 commit comments