Pull requests / #3337

#3337 [Other] Synchronize cache metrics after completed recovery clears

open · @oscarlius · 0 comentarios · En GitHub

Server & APIWindows

Descripción

## Problem and result

Issue #3047 can leave the Monitor conversation-cache current values stale after either completed non-finite-logit recovery clear message. The observer now recognizes only the two completed engine messages and resets `parked` and `bytes` while preserving cumulative cache history.

## Related discussion

Continues #3049 after the 0.2.0-beta tracker reset. The original passed the new format check, but GitHub refused to reopen the rebased branch; [the reset bot](https://github.com/Niko1221/Strata/pull/3049#issuecomment-6282595417) explicitly suggested a new linked pull request.

Fixes #3047.

## Approach

- Add strict full-line recognition for the two completed recovery-clear messages in `serve/server.py`.
- Reset only the current cache values, leaving eviction, park, restore, and last-event history unchanged.
- Add local file and local HTTP regression coverage in `serve/test_cache_log_clear.py`.

## Validation

Rebased on upstream main `e88ee39d1d6be6e3364183af3b39b62a7ed6f211` (0.2.0-beta); tested candidate `bc1a4e54b722d985c9205542bfc4fe17226d7987` on Windows, Python 3.14.3. Each test command starts a fresh local process.

**Passed:**
- `py -3.12 -m ruff check --output-format json serve/server.py serve/test_cache_log_clear.py` (Ruff 0.2.1): 10 existing diagnostics, same as unmodified main; zero new diagnostics.
 `python -m unittest serve.test_cache_log_clear` (4 tests); `python -m unittest serve.test_monitor serve.test_server serve.test_prometheus` (357 tests, 3 skipped); `python -m py_compile serve/server.py`; `git diff --check e88ee39d1d6be6e3364183af3b39b62a7ed6f211..HEAD`.

**Failed:** Red reproduction used `git restore --source=e88ee39d1d6be6e3364183af3b39b62a7ed6f211 -- serve/server.py`, then `python -m unittest serve.test_cache_log_clear`, then `git restore --source=HEAD -- serve/server.py`. The test ran 4 tests and failed 8 assertions, including the local `/metrics` fixture retaining stale cache values.

**Not run:** Native backend builds and real GPU/model tests. Only Python observer code changed. The Python 3.14.3 test environment had no Ruff; the separate Python 3.12.7 lint comparison above completed successfully.

## Limits

The parser intentionally accepts only complete known engine recovery messages. Validation used local file fixtures and a local MockEngine HTTP server; it did not use a real engine or a production service.

En el sitio

Enlaces a install, modelos, releases.