mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 03:22:32 -05:00
Motivated by the 10.16-10.21 reports where, after an upgrade, the login page showed "Must be logged in" or sat on the logo + "Loading, please wait." spinner, pages took 5+ minutes, All Boards counts stayed 0 and i18n showed raw keys — the FerretDB v1 (SQLite) process pegged ~2 cores for a long time under WeKan's poll load, i.e. a migration/repair or a saturated backend, with no way to see it without the Admin Panel. Server-side, independent of any client / progress page: - server/startup/repairBoardsOnStartup.js runs the shared board data-repairs once (version-gated, background, 30s after boot) so corrupted data is fixed even if no user opens a board and nobody watches a progress page. - The MongoDB <-> SQLite text migration and the startup repair now PERSIST their progress to the text_migration_status collection (models/textMigrationStatus.js), so a separate process can see "a migration/repair is in progress" (an in-memory object could not). Status overview (server/lib/systemStatus.js), shown in Admin Panel / Problems -> Summary and via the method systemStatusReport (admin-gated, server/methods/ systemStatus.js): - everything in progress (text migration, board repair, recovery, cron migration, attachment migration) aggregated from the persisted status collections; - detected problems (broken cards; failing login-page checks); - login-page "Must be logged in" / "Loading, please wait" cause checklist (migration in progress, ROOT_URL, LDAP, Sandstorm) — models/lib/loginProblems.js; - a CPU detail area that calls out a pegged ferretdb process and the mitigation. Snap: `snap run wekan.problems` (snap-src/bin/wekan-problems[.mjs], snapcraft app `problems`) prints the same overview as text — problems, migrations/repairs in progress, login checks — so an admin with only server access can see it WITHOUT Admin Panel access. Sub-commands: migrations | login | broken-cards | cpu | help. Pure helpers models/lib/loginProblems.js and models/lib/problemsOverview.js are unit-tested; tests/problemsStatus.test.cjs (14 checks) also source-guards the server hub, method, startup pass, migration persistence and snap command. Thanks to xet7 !
43 lines
1.6 KiB
Plaintext
43 lines
1.6 KiB
Plaintext
template(name="problemsSummary")
|
|
.global-search-results-list-wrapper
|
|
h1 {{_ 'summary'}}
|
|
|
|
//- Status overview: migrations / repairs in progress + detected problems.
|
|
//- Same data as `snap run wekan.problems`.
|
|
if statusOverview
|
|
h2 {{_ 'problems-status-title'}}
|
|
if statusOverview.anyInProgress
|
|
p {{_ 'problems-in-progress-help'}}
|
|
.admin-problem-banner
|
|
each item in inProgress
|
|
.admin-problem-item
|
|
i.fa.fa-spinner.fa-spin
|
|
span.admin-problem-path {{item.message}}
|
|
else
|
|
p {{_ 'problems-none-in-progress'}}
|
|
if statusOverview.anyProblems
|
|
.admin-problem-banner
|
|
each problem in statusProblems
|
|
.admin-problem-item
|
|
i.fa.fa-exclamation-triangle
|
|
span.admin-problem-path {{problem.title}}
|
|
if problem.count
|
|
span.admin-problem-count {{problem.count}}
|
|
br
|
|
span.quiet {{problem.detail}}
|
|
|
|
h2 {{_ 'problems'}}
|
|
if hasProblems
|
|
p {{_ 'problems-summary-help'}}
|
|
.admin-problem-banner
|
|
each area in areas
|
|
label.admin-problem-item
|
|
input.js-problem-check(type="checkbox" data-stream="{{area.stream}}")
|
|
i.fa.fa-exclamation-triangle
|
|
span.admin-problem-path {{_ 'admin-panel'}} → {{_ 'problems'}} → {{areaLabel area.stream}}
|
|
span.admin-problem-count {{area.count}} {{_ 'new-problems'}}
|
|
.admin-problem-actions
|
|
button.js-ack-checked.primary {{_ 'acknowledge'}}
|
|
else
|
|
p {{_ 'no-new-problems'}}
|