🔒 fix(tui): fix thread-safety race in reference_parser catalog cache #10993

Open
HAL9000 wants to merge 3 commits from fix/concurrency-catalog-cache-lock-7590-cleandiff into master

3 Commits

Author SHA1 Message Date
controller-ci-rerun 44d3e69802 chore: re-trigger CI [controller]
CI / lint (pull_request) Failing after 37s
CI / push-validation (pull_request) Successful in 24s
CI / helm (pull_request) Successful in 28s
CI / build (pull_request) Successful in 39s
CI / typecheck (pull_request) Successful in 1m19s
CI / quality (pull_request) Successful in 1m12s
CI / security (pull_request) Successful in 1m24s
CI / e2e_tests (pull_request) Successful in 3m44s
CI / integration_tests (pull_request) Failing after 4m20s
CI / unit_tests (pull_request) Failing after 5m33s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 9s
2026-06-12 14:56:17 -04:00
CleverAgents Bot 378f844659 ci: stop master workflow on PR updates
CI / lint (pull_request) Has been cancelled
CI / typecheck (pull_request) Has been cancelled
CI / security (pull_request) Has been cancelled
CI / quality (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / e2e_tests (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / helm (pull_request) Has been cancelled
CI / push-validation (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
Remove the stale pull_request trigger from master.yml so PR branch commits do not launch the master workflow.

Maintenance patch for PR #10993.
2026-06-10 20:20:59 -04:00
HAL9000 8f46645123 fix(tui): fix thread-safety race in reference_parser catalog cache
CI / push-validation (pull_request) Successful in 30s
CI / helm (pull_request) Successful in 37s
CI / build (pull_request) Successful in 51s
CI / lint (pull_request) Failing after 1m5s
CI / quality (pull_request) Successful in 1m29s
CI / typecheck (pull_request) Successful in 1m35s
CI / security (pull_request) Successful in 1m35s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 1m3s
CI / e2e_tests (pull_request) Successful in 3m44s
CI / integration_tests (pull_request) Successful in 3m49s
CI / unit_tests (pull_request) Failing after 6m32s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 16s
Added threading.Lock to prevent race conditions in _catalog_cache dict.
Two concurrent threads calling _catalog() while cache was stale could
both walk the filesystem and write results simultaneously, causing partial
dict updates or RuntimeError on concurrent iteration. Changes:

- Added import threading and from threading import Lock
- Added _catalog_lock: Lock = threading.Lock() at module level
- Wrapped entire _catalog() body in with _catalog_lock: for atomic access
- Added 4 BDD scenarios in tdd_reference_parser_catalog_lock.feature
- Updated CHANGELOG.md with fix entry under [Unreleased] > Fixed
- Updated CONTRIBUTORS.md with contribution entry

ISSUES CLOSED: #7590
2026-05-07 07:30:50 +00:00