Skip to content

2026-09-09 vxData API event loop fix

Moved synchronous MinIO and Polars request work off the FastAPI event loop with a minimal sync-route change.

Work Done

  • Implemented a four-file surgical fix in the isolated /tmp/mono-vxdata-event-loop worktree without committing or pushing application code.
  • Converted four storage handlers with synchronous MinIO or Polars work to plain FastAPI def routes so Starlette runs them in its worker pool.
  • Converted the /query/parquet route and its two thin CRUD helpers to synchronous functions. Removed the unused AsyncSession dependency and parameter from that chain.
  • Kept SDK, migration, probe, database, instrumentation, limit, scaling, test, version, and lockfile behavior unchanged.
  • Validated the changed files with direct Ruff format and lint checks, the full app typecheck, 15 storage service tests, and the scoped-access test that exercises /query/parquet.

Lessons Learned: Pitfalls

  • The configured vxData API Ruff tasks reported No Python files found because [tool.ruff] include = ["src"] did not match source files with the installed Ruff version. Explicit changed-file checks with --isolated were needed for meaningful validation.
  • Pixi refreshed unrelated local path-package metadata in pixi.lock even during frozen validation. The unrelated lockfile change had to be detected and reverted.

Lessons Learned: Improvements

  • Document a reliable changed-file Ruff command for the vxData API until its include pattern is corrected.
  • Note that Pixi validation can touch local dependency metadata and always check the final working-tree diff after running it.
Navigation

Type to search…

↑↓ navigate↵ selectEsc close