feat(server): wire onPeerDeactivated at federationWorker peer-deactivation sites

This commit is contained in:
Jannis Braun
2026-04-24 00:42:20 +02:00
parent 0a8949fbfb
commit 743fdcac97
+14 -1
View File
@@ -11,7 +11,7 @@ import { getDmMessageWithUser } from '../routes/dm.js';
import { connectionManager } from '../ws/handler.js';
import { generateThumbnail } from './thumbnail.js';
import type { FederationRelayRequest, FederationRelayResponse, FederationRelayEvent } from '@backspace/shared';
import { onPeerActivated, startupBootstrapSync } from './federationPeerActivation.js';
import { onPeerActivated, startupBootstrapSync, onPeerDeactivated } from './federationPeerActivation.js';
import fs from 'node:fs';
import path from 'node:path';
import crypto from 'node:crypto';
@@ -310,6 +310,9 @@ export async function processOutboxTick(): Promise<void> {
})
.where(eq(schema.federationPeers.id, peerId))
.run();
onPeerDeactivated(peerId, 'auth_threshold').catch(err =>
console.error('[federation-worker] onPeerDeactivated from auth threshold failed:', err)
);
console.warn(
`[federation-worker] Peer ${peerOrigin} transitioned to needs_attention after ${decision.newAuthFailures} consecutive ${response.status} responses`,
);
@@ -416,6 +419,12 @@ function handleOutboxDeliveryFailure(
.set(updates)
.where(eq(schema.federationPeers.id, peerId))
.run();
if (newFailures >= PEER_UNREACHABLE_THRESHOLD) {
onPeerDeactivated(peerId, 'network_threshold').catch(err =>
console.error('[federation-worker] onPeerDeactivated from unreachable threshold failed:', err)
);
}
}
// ─── Pending Peer Resolution ───────────────────────────────────────────────
@@ -468,6 +477,10 @@ async function resolvePendingPeers(): Promise<void> {
.where(eq(schema.federationOutbox.peerId, peerId))
.run();
onPeerDeactivated(peerId, 'remote_rejected').catch(err =>
console.error('[federation-worker] onPeerDeactivated from resolvePendingPeers rejected failed:', err)
);
// Push federation_peer_rejected WS event to affected users
pushPeerRejectedEvent(peerOrigin, contextMap);
// Notify admins of peer state change