If a full reindex of all tables is killed partway through (pod restart, OOM, deploy), or two full reindexes overlap, the tables it marked REBUILDING stay that way. Only another all-tables full reindex clears that status. Until then:
the listener keeps writing every delete as an AWAITING_REINDEX row, so those rows pile up without limit;
drift detection is off for those tables;
two overlapping runs drain each other's captured rows.
No data is lost: search stays correct, and the next full reindex applies the captured deletes. Found in the PR #20 review (issue #14).
Fix: before starting, detect whether a full reindex is still running, using the FULL_REINDEX run record. Refuse a second concurrent run. Recover a stale REBUILDING (a dead run) by restoring the table status and turning its AWAITING_REINDEX rows PENDING so basepull replays them. No schema change.
If a full reindex of all tables is killed partway through (pod restart, OOM, deploy), or two full reindexes overlap, the tables it marked `REBUILDING` stay that way. Only another all-tables full reindex clears that status. Until then:
- the listener keeps writing every delete as an `AWAITING_REINDEX` row, so those rows pile up without limit;
- drift detection is off for those tables;
- two overlapping runs drain each other's captured rows.
No data is lost: search stays correct, and the next full reindex applies the captured deletes. Found in the PR #20 review (issue #14).
Fix: before starting, detect whether a full reindex is still running, using the `FULL_REINDEX` run record. Refuse a second concurrent run. Recover a stale `REBUILDING` (a dead run) by restoring the table status and turning its `AWAITING_REINDEX` rows `PENDING` so basepull replays them. No schema change.
Part of #12.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
If a full reindex of all tables is killed partway through (pod restart, OOM, deploy), or two full reindexes overlap, the tables it marked
REBUILDINGstay that way. Only another all-tables full reindex clears that status. Until then:AWAITING_REINDEXrow, so those rows pile up without limit;No data is lost: search stays correct, and the next full reindex applies the captured deletes. Found in the PR #20 review (issue #14).
Fix: before starting, detect whether a full reindex is still running, using the
FULL_REINDEXrun record. Refuse a second concurrent run. Recover a staleREBUILDING(a dead run) by restoring the table status and turning itsAWAITING_REINDEXrowsPENDINGso basepull replays them. No schema change.Part of #12.