@@ -21,7 +21,7 @@ use lazy_static::lazy_static;
21
21
use logger:: SyncLogger ;
22
22
use parking_lot:: Mutex ;
23
23
use requests:: { eth:: handle_set_interval_mining, hardhat:: rpc_types:: ResetProviderConfig } ;
24
- use tokio:: { runtime, sync:: Mutex as AsyncMutex } ;
24
+ use tokio:: { runtime, sync:: Mutex as AsyncMutex , task } ;
25
25
26
26
pub use self :: {
27
27
config:: * ,
@@ -118,24 +118,26 @@ impl<LoggerErrorT: Debug + Send + Sync + 'static> Provider<LoggerErrorT> {
118
118
} )
119
119
}
120
120
121
- pub async fn handle_request (
121
+ /// Blocking method to handle a request.
122
+ pub fn handle_request (
122
123
& self ,
123
124
request : ProviderRequest ,
124
125
) -> Result < serde_json:: Value , ProviderError < LoggerErrorT > > {
125
- let mut data = self . data . lock ( ) . await ;
126
+ let mut data = task :: block_in_place ( || self . runtime . block_on ( self . data . lock ( ) ) ) ;
126
127
127
128
match request {
128
129
ProviderRequest :: Single ( request) => self . handle_single_request ( & mut data, request) ,
129
130
ProviderRequest :: Batch ( requests) => self . handle_batch_request ( & mut data, requests) ,
130
131
}
131
132
}
132
133
133
- pub async fn log_failed_deserialization (
134
+ /// Blocking method to log a failed deserialization.
135
+ pub fn log_failed_deserialization (
134
136
& self ,
135
137
method_name : & str ,
136
138
error : & ProviderError < LoggerErrorT > ,
137
139
) -> Result < ( ) , ProviderError < LoggerErrorT > > {
138
- let mut data = self . data . lock ( ) . await ;
140
+ let mut data = task :: block_in_place ( || self . runtime . block_on ( self . data . lock ( ) ) ) ;
139
141
data. logger_mut ( )
140
142
. print_method_logs ( method_name, Some ( error) )
141
143
. map_err ( ProviderError :: Logger )
0 commit comments