Skip to content

Commit 43ea3a4

Browse files
committed
Fix issue on processing Safe internal txs
- Only one internal tx was processed at a time, as internal tx `iterator` was consumed - Cache does not need to be emptied before, can be only emptied after processing - `return` position is not relevant, but it's more clear inside of the `try` block
1 parent 3cee7b7 commit 43ea3a4

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

safe_transaction_service/history/indexers/tx_processor.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -384,28 +384,24 @@ def process_decoded_transactions(
384384
:return:
385385
"""
386386
internal_tx_ids = []
387-
results = []
387+
results: list[bool] = []
388388
contract_addresses = set()
389389

390-
# Clear cache for the involved Safes
391-
for internal_tx_decoded in internal_txs_decoded:
392-
contract_address = internal_tx_decoded.internal_tx._from
393-
contract_addresses.add(contract_address)
394-
self.clear_cache(safe_address=contract_address)
395-
396390
try:
397391
for internal_tx_decoded in internal_txs_decoded:
392+
contract_address = internal_tx_decoded.internal_tx._from
393+
contract_addresses.add(contract_address)
398394
internal_tx_ids.append(internal_tx_decoded.internal_tx_id)
399395
results.append(self.__process_decoded_transaction(internal_tx_decoded))
400396

401397
# Set all as decoded in the same batch
402398
InternalTxDecoded.objects.filter(internal_tx__in=internal_tx_ids).update(
403399
processed=True
404400
)
401+
return results
405402
finally:
406403
for contract_address in contract_addresses:
407404
self.clear_cache(safe_address=contract_address)
408-
return results
409405

410406
def __process_decoded_transaction(
411407
self, internal_tx_decoded: InternalTxDecoded

0 commit comments

Comments
 (0)