trustgraph/tests
V.Sreeram 8f18ba0257
fix: prevent duplicate dispatcher creation race condition in invoke_global_service (#715)
* fix: prevent duplicate dispatcher creation race condition in invoke_global_service

Concurrent coroutines could all pass the `if key in self.dispatchers` check
before any of them wrote the result back, because `await dispatcher.start()`
yields to the event loop. This caused multiple Pulsar consumers to be created
on the same shared subscription, distributing responses round-robin and
dropping ~2/3 of them — manifesting as a permanent spinner in the Workbench UI.

Apply a double-checked asyncio.Lock in both `invoke_global_service` and
`invoke_flow_service` so only one dispatcher is ever created per service key.

* test: add concurrent-dispatch tests for race condition fix

Add asyncio.gather-based tests that verify invoke_global_service and
invoke_flow_service create exactly one dispatcher under concurrent calls,
preventing the duplicate Pulsar consumer bug.
2026-04-06 11:13:59 +01:00
..
contract Add unified explainability support and librarian storage for (#693) 2026-03-12 21:40:09 +00:00
integration release/v2.2 -> master (#733) 2026-03-29 20:27:25 +01:00
unit fix: prevent duplicate dispatcher creation race condition in invoke_global_service (#715) 2026-04-06 11:13:59 +01:00
utils Streaming rag responses (#568) 2025-11-26 19:47:39 +00:00
__init__.py Test suite executed from CI pipeline (#433) 2025-07-14 14:57:44 +01:00
conftest.py Fix test async warnings (#601) 2026-01-06 22:09:34 +00:00
pytest.ini Entity-centric graph (#633) 2026-02-16 13:26:43 +00:00
requirements.txt Test suite executed from CI pipeline (#433) 2025-07-14 14:57:44 +01:00