From a2ad02ecbaee98acaddf72d6fc8ef7ace864acc6 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Sat, 11 Apr 2026 21:36:50 -0400 Subject: [PATCH] matrix: stabilize healthy sync epochs --- extensions/matrix/src/matrix/monitor/index.test.ts | 11 ++++++++++- extensions/matrix/src/matrix/monitor/index.ts | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/extensions/matrix/src/matrix/monitor/index.test.ts b/extensions/matrix/src/matrix/monitor/index.test.ts index 46e7afc80be..04987d88816 100644 --- a/extensions/matrix/src/matrix/monitor/index.test.ts +++ b/extensions/matrix/src/matrix/monitor/index.test.ts @@ -523,7 +523,16 @@ describe("monitorMatrixProvider", () => { expect(getHealthySyncSinceMs()).toBeUndefined(); hoisted.client.emit("sync.state", "SYNCING", "RECONNECTING", undefined); - expect(getHealthySyncSinceMs()).toBe(Date.now()); + const firstHealthySyncSinceMs = Date.now(); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); + + await vi.advanceTimersByTimeAsync(3_000); + hoisted.client.emit("sync.state", "CATCHUP", "SYNCING", undefined); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); + + await vi.advanceTimersByTimeAsync(2_000); + hoisted.client.emit("sync.state", "PREPARED", "CATCHUP", undefined); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); await vi.advanceTimersByTimeAsync(5_000); hoisted.client.emit("sync.state", "RECONNECTING", "SYNCING", new Error("network flap")); diff --git a/extensions/matrix/src/matrix/monitor/index.ts b/extensions/matrix/src/matrix/monitor/index.ts index 3f0f014d9af..cb07f09e07f 100644 --- a/extensions/matrix/src/matrix/monitor/index.ts +++ b/extensions/matrix/src/matrix/monitor/index.ts @@ -250,7 +250,7 @@ export async function monitorMatrixProvider(opts: MonitorMatrixOpts = {}): Promi let healthySyncSinceMs: number | undefined; const noteSyncHealthState = (state: MatrixSyncState, at = Date.now()) => { if (isMatrixReadySyncState(state)) { - healthySyncSinceMs = at; + healthySyncSinceMs ??= at; return; } if (isMatrixDisconnectedSyncState(state)) {