PageIndex/pageindex/index
mountain 214098f489 fix: ceiling semaphore permit leak under cancellation
asyncio.to_thread(ceiling_sem.acquire) blocks a worker thread that
can't be interrupted. If the awaiting coroutine is cancelled (Ctrl-C,
an outer timeout) while that thread is still parked inside acquire(),
the thread can go on to actually acquire the permit after the
coroutine has already unwound — leaking it forever, since the
matching finally: release() never runs for that attempt. Poll with
the non-blocking acquire(False) form instead, which returns instantly
and closes the leak window entirely.
2026-07-09 16:33:09 +08:00
..
__init__.py feat: add PageIndex SDK with local/cloud dual-mode support (#207) 2026-04-08 20:21:58 +08:00
page_index.py fix: prompt-injection delimiter escape, legacy config coercion, gather resilience, true cross-thread concurrency bound 2026-07-09 11:15:58 +08:00
page_index_md.py fix: prompt-injection delimiter escape, legacy config coercion, gather resilience, true cross-thread concurrency bound 2026-07-09 11:15:58 +08:00
pipeline.py fix: CMYK image drop, empty-doc crash, page_index shadowing, sqlite hardening, flaky tests 2026-07-09 11:58:59 +08:00
utils.py fix: ceiling semaphore permit leak under cancellation 2026-07-09 16:33:09 +08:00