mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-13 12:16:54 +00:00
fix(sender): Only claim a destination when the send is allowed
This commit is contained in:
1 parent
644d247007
commit
9d7c8be390
1 file changed
+21
-21
@@ -419,27 +419,27 @@ impl Service {
|
||||
return Ok((false, false));
|
||||
}
|
||||
}
|
||||
statuses
|
||||
.entry(dest.clone())
|
||||
.and_modify(|e| match e {
|
||||
| TransactionStatus::Running | TransactionStatus::Retrying(_) => {
|
||||
allow = false; // already running
|
||||
trace!("Transaction is already running for {dest:?}");
|
||||
},
|
||||
| TransactionStatus::Failed(tries, _) => {
|
||||
if allow {
|
||||
*e = TransactionStatus::Retrying(*tries);
|
||||
trace!(
|
||||
"Previous transaction failed for {dest:?} ({e:?}), will retry"
|
||||
);
|
||||
}
|
||||
retry = true;
|
||||
},
|
||||
})
|
||||
.or_insert_with(|| {
|
||||
trace!("Inserting running status for {dest:?}");
|
||||
TransactionStatus::Running
|
||||
});
|
||||
let entry = statuses.entry(dest.clone()).and_modify(|e| match e {
|
||||
| TransactionStatus::Running | TransactionStatus::Retrying(_) => {
|
||||
allow = false; // already running
|
||||
trace!("Transaction is already running for {dest:?}");
|
||||
},
|
||||
| TransactionStatus::Failed(tries, _) => {
|
||||
if allow {
|
||||
*e = TransactionStatus::Retrying(*tries);
|
||||
trace!("Previous transaction failed for {dest:?} ({e:?}), will retry");
|
||||
}
|
||||
retry = true;
|
||||
},
|
||||
});
|
||||
|
||||
// Only claim the destination if we are actually going to send. A status
|
||||
// inserted here without a transaction being queued is never cleared.
|
||||
if allow {
|
||||
trace!("Inserting running status for {dest:?}");
|
||||
entry.or_insert(TransactionStatus::Running);
|
||||
}
|
||||
|
||||
return Ok((allow, retry));
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user