@@ -62,6 +62,14 @@ pub struct Config {
6262 #[ serde( with = "humantime_serde" , default = "default_key_management_polling" ) ]
6363 pub key_management_polling : Duration ,
6464
65+ /// The maximum number of blocks to fetch per `eth_getLogs` request.
66+ #[ serde( default = "default_get_logs_batch_size" ) ]
67+ pub get_logs_batch_size : u64 ,
68+
69+ /// Maximum number of consecutive polling errors before stopping the loop.
70+ #[ serde( default = "default_max_consecutive_polling_errors" ) ]
71+ pub max_consecutive_polling_errors : usize ,
72+
6573 /// Optional block number to start processing decryption events from.
6674 pub decryption_from_block_number : Option < u64 > ,
6775 /// Optional block number to start processing KMS operation events from.
@@ -75,13 +83,21 @@ fn default_service_name() -> String {
7583}
7684
7785fn default_decryption_polling ( ) -> Duration {
78- Duration :: from_secs ( 1 )
86+ Duration :: from_millis ( 500 )
7987}
8088
8189fn default_key_management_polling ( ) -> Duration {
8290 Duration :: from_secs ( 30 )
8391}
8492
93+ fn default_get_logs_batch_size ( ) -> u64 {
94+ 100
95+ }
96+
97+ fn default_max_consecutive_polling_errors ( ) -> usize {
98+ 20
99+ }
100+
85101// Default implementation for testing purpose
86102impl Default for Config {
87103 fn default ( ) -> Self {
@@ -101,6 +117,8 @@ impl Default for Config {
101117 healthcheck_timeout : default_healthcheck_timeout ( ) ,
102118 decryption_polling : default_decryption_polling ( ) ,
103119 key_management_polling : default_key_management_polling ( ) ,
120+ get_logs_batch_size : default_get_logs_batch_size ( ) ,
121+ max_consecutive_polling_errors : default_max_consecutive_polling_errors ( ) ,
104122 decryption_from_block_number : None ,
105123 kms_operation_from_block_number : None ,
106124 }
@@ -125,6 +143,8 @@ mod tests {
125143 env:: remove_var ( "KMS_CONNECTOR_DECRYPTION_CONTRACT__ADDRESS" ) ;
126144 env:: remove_var ( "KMS_CONNECTOR_KMS_GENERATION_CONTRACT__ADDRESS" ) ;
127145 env:: remove_var ( "KMS_CONNECTOR_SERVICE_NAME" ) ;
146+ env:: remove_var ( "KMS_CONNECTOR_GET_LOGS_BATCH_SIZE" ) ;
147+ env:: remove_var ( "KMS_CONNECTOR_MAX_CONSECUTIVE_POLLING_ERRORS" ) ;
128148 }
129149 }
130150
@@ -207,15 +227,27 @@ mod tests {
207227 // Set an environment variable to override the file
208228 let gateway_chain_id = 77737 ;
209229 let service_name = "kms-connector-override" ;
230+ let get_logs_batch_size: u64 = 500 ;
231+ let max_consecutive_polling_errors = 5 ;
210232 let mut expected_config = example_config. clone ( ) ;
211233 expected_config. gateway_chain_id = gateway_chain_id;
212234 expected_config. service_name = service_name. to_string ( ) ;
235+ expected_config. get_logs_batch_size = get_logs_batch_size;
236+ expected_config. max_consecutive_polling_errors = max_consecutive_polling_errors;
213237 unsafe {
214238 env:: set_var (
215239 "KMS_CONNECTOR_GATEWAY_CHAIN_ID" ,
216240 gateway_chain_id. to_string ( ) ,
217241 ) ;
218242 env:: set_var ( "KMS_CONNECTOR_SERVICE_NAME" , service_name) ;
243+ env:: set_var (
244+ "KMS_CONNECTOR_GET_LOGS_BATCH_SIZE" ,
245+ get_logs_batch_size. to_string ( ) ,
246+ ) ;
247+ env:: set_var (
248+ "KMS_CONNECTOR_MAX_CONSECUTIVE_POLLING_ERRORS" ,
249+ max_consecutive_polling_errors. to_string ( ) ,
250+ ) ;
219251 }
220252
221253 // Load config from both sources
0 commit comments