Skip to content

Commit 80b47ef

Browse files
committed
don't release lock in case of lock lost error cases
1 parent b249621 commit 80b47ef

File tree

1 file changed

+15
-2
lines changed
  • executors/src/eoa/worker

1 file changed

+15
-2
lines changed

executors/src/eoa/worker/mod.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use twmq::{
2222
use crate::eoa::authorization_cache::EoaAuthorizationCache;
2323
use crate::eoa::store::{
2424
AtomicEoaExecutorStore, EoaExecutorStore, EoaExecutorStoreKeys, EoaHealth, SubmissionResult,
25+
TransactionStoreError,
2526
};
2627
use crate::metrics::{
2728
EoaMetrics, calculate_duration_seconds, current_timestamp_ms, record_eoa_job_processing_time,
@@ -241,13 +242,25 @@ where
241242
self.soft_release_eoa_lock(&job.job.data).await;
242243
}
243244

245+
#[tracing::instrument(name = "eoa_executor_worker_on_fail", skip_all, fields(eoa = ?job.job.data.eoa_address, chain_id = job.job.data.chain_id, job_id = ?job.job.id))]
244246
async fn on_fail(
245247
&self,
246248
job: &BorrowedJob<Self::JobData>,
247-
_fail_data: FailHookData<'_, Self::ErrorData>,
249+
fail_data: FailHookData<'_, Self::ErrorData>,
248250
_tx: &mut TransactionContext<'_>,
249251
) {
250-
self.soft_release_eoa_lock(&job.job.data).await;
252+
if let EoaExecutorWorkerError::StoreError { inner_error, .. } = &fail_data.error {
253+
if let TransactionStoreError::LockLost { .. } = &inner_error {
254+
tracing::error!(
255+
eoa = ?job.job.data.eoa_address,
256+
chain_id = job.job.data.chain_id,
257+
"Encountered lock lost store error, skipping soft release of EOA lock"
258+
);
259+
return;
260+
}
261+
} else {
262+
self.soft_release_eoa_lock(&job.job.data).await;
263+
}
251264
}
252265
}
253266

0 commit comments

Comments
 (0)