Pull requests / #3338
#3338 [Other] Read conversation-cache log backlogs without dropping events
open · @oscarlius · 0 comentários · No GitHub
Descrição
## Problem and result Issue #3048 can drop earlier conversation-cache events when more than one MiB arrives between monitor polls. The observer now advances through a captured end of file in bounded chunks, commits only complete lines, and retains a partial line for the next poll. ## Related discussion Continues #3050 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/3050#issuecomment-6282596517) explicitly suggested a new linked pull request. Fixes #3048. ## Approach - Replace the last-MiB seek with bounded sequential chunks in `serve/server.py`. - Commit the byte cursor only through complete lines so interrupted writes and read errors retry safely. - Add local backlog, chunk-boundary, interrupted-read, and local HTTP regression coverage in `serve/test_cache_log_backlog.py`. ## Validation Rebased on upstream main `e88ee39d1d6be6e3364183af3b39b62a7ed6f211` (0.2.0-beta); tested candidate `90ca8acc79242e18f954e71a4c570a4ee8887f41` 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_backlog.py` (Ruff 0.2.1): 10 existing diagnostics, same as unmodified main; zero new diagnostics. `python -m unittest serve.test_cache_log_backlog` (7 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_backlog`, then `git restore --source=HEAD -- serve/server.py`. The test ran 7 tests and failed 8 assertions, covering lost early events, chunk crossings, partial-line retry, and local `/metrics` catch-up. **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 One poll may process a large accumulated backlog; each underlying read remains bounded by `READ_MAX`. Validation used local file fixtures and a local MockEngine HTTP server; it did not use a real engine or a production service.
No site
Links install, modelos, releases.