EverOS/tests/unit
zhanghui 84554ebe22
chore(release): v1.2.2 (#386)
* fix(lancedb): put table-handle resolution inside the deadline

run9 reproduced the stall the previous commits were supposed to close, on a
different table: episode went 13 minutes without a prune — versions climbing
63→66 while foresight and atomic_fact both collapsed to 1 — with **zero**
failure, timeout, or conflict logs. Its last successful prune was logged at
11:41:59 and the staleness clock matched to the second.

The deadline covered the critical section but not the await ahead of it:
`table = await self._table()` sat outside `_locked`, so a hang while resolving
the table handle never returned. The scheduler runs one maintenance task per
kind and skips a kind whose task is still in flight, so that kind stops being
maintained permanently, silently, because nothing failed.

Move the handle resolution inside the deadline for all seven locked operations,
and give the lock-free compaction beat its own `_deadline` (it takes no lock so
it cannot block writers, but it can still park a kind by never returning).

Belt and braces in the scheduler: both beats now run under
`_MAINTENANCE_TASK_TIMEOUT_SECONDS`, a last-resort bound on the whole call, so
any await I have not thought of costs one cadence rather than forever.

Regression test: a repo whose `_table_lookup` never resolves must make prune,
optimize and add all raise `VectorStoreBusyError` and leave the lock free.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(release): v1.2.2

Bump to 1.2.2 and cut the changelog. This release is the storage-layer
reliability work: LanceDB maintenance split into lock-free compaction and
write-locked reclamation (fixing unbounded index growth), every write-lock
critical section bounded by a deadline that covers acquisition, a per-kind
prune-staleness signal on GET /health, `everos cascade rebuild` for a drifted
or corrupt index, startup detection of column type drift, and a query-vector
width check that fails fast instead of 13s deep inside LanceDB.

Carries the table-handle deadline fix (previously #385) rather than shipping
1.2.2 with a known stall: the deadline covered the critical section but not the
await ahead of it, so a hang while resolving a table handle parked that kind's
maintenance permanently and silently. Found by a 1h high-rate soak run after
#384 merged.

No migration, no config change, no API change: `docs/openapi.json` differs only
in the version string. The only operator-visible requirement is that
`everos cascade rebuild` now refuses to run while a server holds the OME lock.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: zhanghui <zhanghui@shanda.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 20:46:44 +08:00
..
test_component refactor(config): make [embedding] and [rerank] soft dependencies (#361) 2026-07-29 11:05:23 +08:00
test_config feat(observability): OTel tracing chassis + request-id propagation 2026-07-23 20:47:39 +08:00
test_core chore(release): v1.2.2 (#386) 2026-08-04 20:46:44 +08:00
test_entrypoints fix(lancedb): reclaim stale versions via write-locked prune (#379) 2026-08-03 15:41:13 +08:00
test_infra fix(cascade): per-kind prune staleness + rebuild safety (#384) 2026-08-04 20:03:01 +08:00
test_memory fix(cascade): per-kind prune staleness + rebuild safety (#384) 2026-08-04 20:03:01 +08:00
test_scripts docs: align config and github workflow (#314) 2026-06-29 07:31:31 +08:00
test_service refactor(config): make [embedding] and [rerank] soft dependencies (#361) 2026-07-29 11:05:23 +08:00
__init__.py chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
test_benchmark_config.py chore(release): update EverOS to 1.1.1 (#327) 2026-07-07 18:30:03 +08:00