---
title: "2026-09-09 vxData API event loop fix"
description: "Moved synchronous MinIO and Polars request work off the FastAPI event loop with a minimal sync-route change."
image: "https://docs.virdx.dev/img/virdx-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.virdx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-09-09 vxData API event loop fix

## 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.

Source: https://docs.virdx.dev/knowledge/inbox/2026-09-09-infrastructure-vxdata-event-loop-fix/index.mdx
