feat: Hook transaction senders into health tracking

This commit is contained in:
timedout
2026-08-06 15:21:21 +01:00
parent a838c6b62e
commit 44abc4e8dd
+13
View File
@@ -393,6 +393,17 @@ fn should_attempt_send(
dest: &Destination,
statuses: &mut CurTransactionStatus,
) -> Result<(bool, bool)> {
if let Destination::Federation(server_name) = dest {
let status = statuses
.entry(dest.clone())
.or_insert(TransactionStatus::Running);
let retry = matches!(status, TransactionStatus::Failed(_, _));
return match self.services.federation.retry_after(server_name) {
| None => Ok((true, retry)),
| Some(t) => Ok((t.as_millis() > 0, retry)),
};
}
let (mut allow, mut retry) = (true, false);
statuses
.entry(dest.clone())
@@ -457,6 +468,8 @@ async fn select_edus(&self, server_name: &ServerName) -> Result<(EduVec, u64)> {
events.extend(presence.into_iter().flatten());
events.extend(receipts.into_iter().flatten());
// TODO(nex): some EDUs like typing need flattening
Ok((events, max_edu_count.load(Ordering::Acquire)))
}