@@ -152,8 +152,9 @@ def commit(self) -> None:
152152 retries = 0
153153 unprocessed_items = data .get (UNPROCESSED_ITEMS , {}).get (self .model .Meta .table_name )
154154 while unprocessed_items :
155- sleep_time = random .randint (0 , self .model .Meta .base_backoff_ms * (2 ** retries )) / 1000
156- time .sleep (sleep_time )
155+ # TODO: we should consider using exponential backoff here
156+ # TODO: it is somewhat unintuitive that we retry unprocessed items max_retry_attempts times,
157+ # since each `batch_write_item` operation is also subject to max_retry_attempts
157158 retries += 1
158159 if retries >= self .model .Meta .max_retry_attempts :
159160 self .failed_operations = unprocessed_items
@@ -165,8 +166,7 @@ def commit(self) -> None:
165166 put_items .append (item .get (PUT_REQUEST ).get (ITEM )) # type: ignore
166167 elif DELETE_REQUEST in item :
167168 delete_items .append (item .get (DELETE_REQUEST ).get (KEY )) # type: ignore
168- log .info ("Resending %d unprocessed keys for batch operation after %d seconds sleep" ,
169- len (unprocessed_items ), sleep_time )
169+ log .info ("Resending %d unprocessed keys for batch operation (retry %d)" , len (unprocessed_items ), retries )
170170 data = self .model ._get_connection ().batch_write_item (
171171 put_items = put_items ,
172172 delete_items = delete_items ,
@@ -182,7 +182,6 @@ class MetaProtocol(Protocol):
182182 host : Optional [str ]
183183 connect_timeout_seconds : int
184184 read_timeout_seconds : int
185- base_backoff_ms : int
186185 max_retry_attempts : int
187186 max_pool_connections : int
188187 extra_headers : Mapping [str , str ]
@@ -241,8 +240,6 @@ def __init__(self, name, bases, namespace, discriminator=None) -> None:
241240 setattr (attr_obj , 'connect_timeout_seconds' , get_settings_value ('connect_timeout_seconds' ))
242241 if not hasattr (attr_obj , 'read_timeout_seconds' ):
243242 setattr (attr_obj , 'read_timeout_seconds' , get_settings_value ('read_timeout_seconds' ))
244- if not hasattr (attr_obj , 'base_backoff_ms' ):
245- setattr (attr_obj , 'base_backoff_ms' , get_settings_value ('base_backoff_ms' ))
246243 if not hasattr (attr_obj , 'max_retry_attempts' ):
247244 setattr (attr_obj , 'max_retry_attempts' , get_settings_value ('max_retry_attempts' ))
248245 if not hasattr (attr_obj , 'max_pool_connections' ):
@@ -1052,7 +1049,6 @@ def _get_connection(cls) -> TableConnection:
10521049 connect_timeout_seconds = cls .Meta .connect_timeout_seconds ,
10531050 read_timeout_seconds = cls .Meta .read_timeout_seconds ,
10541051 max_retry_attempts = cls .Meta .max_retry_attempts ,
1055- base_backoff_ms = cls .Meta .base_backoff_ms ,
10561052 max_pool_connections = cls .Meta .max_pool_connections ,
10571053 extra_headers = cls .Meta .extra_headers ,
10581054 aws_access_key_id = cls .Meta .aws_access_key_id ,
0 commit comments