Mail real-wheel pagination stalls after successful 2,000-message backfill in merge35b #1488

Open
opened 2026-10-08 22:39:37 +00:00 by kayg · 2 comments
Owner

Merge35b (#1479), head 16250888d. The real TLS Dovecot e2e connected and listed all 2,000 fixture messages. Backfill completed in 26.142 seconds. The subsequent real-wheel pagination check at apps/web/e2e/mail-sync-613.mjs:155 timed out after 15 seconds while waiting for data-blaze-count to increase or data-blaze-has-next to become false. The original assertion remains unchanged. This blocks the full Mail sync e2e. Classification against production cc1af3c12 is pending; the timing alone does not establish a new regression. Evidence: artifacts/merge35b/e2e/mail-sync-613-final.log. No server crash or unexpected 5xx was observed in this scenario.

Merge35b (#1479), head 16250888d. The real TLS Dovecot e2e connected and listed all 2,000 fixture messages. Backfill completed in 26.142 seconds. The subsequent real-wheel pagination check at apps/web/e2e/mail-sync-613.mjs:155 timed out after 15 seconds while waiting for data-blaze-count to increase or data-blaze-has-next to become false. The original assertion remains unchanged. This blocks the full Mail sync e2e. Classification against production cc1af3c12 is pending; the timing alone does not establish a new regression. Evidence: artifacts/merge35b/e2e/mail-sync-613-final.log. No server crash or unexpected 5xx was observed in this scenario.
Author
Owner

Merge35b triage (#1479), application head 16250888d, comparison against production cc1af3c12. The first merged real TLS Dovecot run backfills all 2,000 fixture Messages, then reaches the end of UI pagination with 1,998 Threads instead of the unchanged expected 1,999. data-blaze-has-next is false. The original assertion fails at mail-sync-613.mjs:147. This is distinct from #1488's real-wheel timeout.

The first production run fails earlier at the unchanged 15-second real-wheel wait (original line 155). It does not establish the end-of-list count. Production classification of the one-Thread shortfall is pending; no data deletion or corruption is proved. Keep the original expected count.

Added bounded, read-only metadata counts after observed failures, for both second runs. The diagnostic follows at most 60 dependent cursor pages and logs counts only, then preserves the original assertion or error. It distinguishes API completeness from UI pagination. It logs no Message content or credentials. No product code changed.

Evidence: artifacts/m35btriage/mail-merged-1.log, mail-prod-1.log. Both binaries use the same existing mail-test-provider feature, required for the isolated localhost TLS fixture. Final comparison evidence will follow on #1479 and this issue. Do not close this issue.

Merge35b triage (#1479), application head 16250888d, comparison against production cc1af3c12. The first merged real TLS Dovecot run backfills all 2,000 fixture Messages, then reaches the end of UI pagination with 1,998 Threads instead of the unchanged expected 1,999. `data-blaze-has-next` is false. The original assertion fails at mail-sync-613.mjs:147. This is distinct from #1488's real-wheel timeout. The first production run fails earlier at the unchanged 15-second real-wheel wait (original line 155). It does not establish the end-of-list count. Production classification of the one-Thread shortfall is pending; no data deletion or corruption is proved. Keep the original expected count. Added bounded, read-only metadata counts after observed failures, for both second runs. The diagnostic follows at most 60 dependent cursor pages and logs counts only, then preserves the original assertion or error. It distinguishes API completeness from UI pagination. It logs no Message content or credentials. No product code changed. Evidence: artifacts/m35btriage/mail-merged-1.log, mail-prod-1.log. Both binaries use the same existing mail-test-provider feature, required for the isolated localhost TLS fixture. Final comparison evidence will follow on #1479 and this issue. Do not close this issue.
Author
Owner

#1479 production comparison complete: two runs per release. Production cc1af3c12 reproduces the original real-wheel 15-second wait timeout in 2/2 runs. Merged 16250888d does so in 1/2; the other merged run reaches pagination end with 1,998 Threads versus unchanged expected 1,999. On the second pair, a failure-only metadata diagnostic reads 40 API pages on BOTH releases and gets exactly 1,998 rows / 1,998 unique Messages / 1,998 unique Threads, no next cursor; both UIs are at 250 with hasNext=true. Therefore both the wheel timeout and the API count shortfall occur on production. Classify #1488 and #1494 as pre-existing/nonblocking, keep them open. No test expectation changed. This does not identify the cause or prove data deletion. Backfill still reports all 2,000 Messages complete on both releases. CSP reports are zero. Logs: artifacts/m35btriage/mail-{prod,merged}-{1,2}.log; raw count profiles and summary JSON retained.

#1479 production comparison complete: two runs per release. Production cc1af3c12 reproduces the original real-wheel 15-second wait timeout in 2/2 runs. Merged 16250888d does so in 1/2; the other merged run reaches pagination end with 1,998 Threads versus unchanged expected 1,999. On the second pair, a failure-only metadata diagnostic reads 40 API pages on BOTH releases and gets exactly 1,998 rows / 1,998 unique Messages / 1,998 unique Threads, no next cursor; both UIs are at 250 with hasNext=true. Therefore both the wheel timeout and the API count shortfall occur on production. Classify #1488 and #1494 as pre-existing/nonblocking, keep them open. No test expectation changed. This does not identify the cause or prove data deletion. Backfill still reports all 2,000 Messages complete on both releases. CSP reports are zero. Logs: artifacts/m35btriage/mail-{prod,merged}-{1,2}.log; raw count profiles and summary JSON retained.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1488
No description provided.