CI / Build & Quality Checks (pull_request) Successful in 2m40s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 8s
CI / Playwright smoke (e2e) (pull_request) Successful in 17m50s
A hung Synapse (accepts connections, never answers) kept sync SYNCING for up to 110 s (pollTimeout 30 s + the SDK's 80 s buffer), so no strip showed and Kuma was never asked. A watchdog now notices a /sync overdue by 45 s, confirms with a 5 s GET /_matrix/client/versions, then shows "Lotus Chat's server isn't responding…" and polls Kuma at once. Fixes #317 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
17 lines
673 B
TypeScript
17 lines
673 B
TypeScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { SyncState } from 'matrix-js-sdk';
|
|
import { STALL_AFTER_MS, syncOverdue } from './useHomeserverStall';
|
|
|
|
test('syncOverdue: only while SYNCING and past the stall threshold (#317)', () => {
|
|
const now = 1_000_000;
|
|
assert.equal(syncOverdue(now - STALL_AFTER_MS - 1, now, SyncState.Syncing), true);
|
|
assert.equal(syncOverdue(now - 20_000, now, SyncState.Syncing), false, 'a normal long-poll');
|
|
assert.equal(
|
|
syncOverdue(now - 120_000, now, SyncState.Reconnecting),
|
|
false,
|
|
'SyncStatus already shows that',
|
|
);
|
|
assert.equal(syncOverdue(now - 120_000, now, null), false);
|
|
});
|