mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-05-04 04:42:36 +02:00
flow-svc's long-lived ConfigClient was constructed with
subscription=f"{self.id}--config--{id}", where id=params.get("id") is
the deterministic processor id. On Pulsar the config-response topic
maps to class=response -> Exclusive subscription; when the supervisor
restarts flow-svc within Pulsar's inactive-subscription TTL (minutes),
the previous process's ghost consumer still holds the subscription
and the new process's re-subscribe is rejected with ConsumerBusy,
crash-looping flow-svc.
This is a v2.2 -> v2.3 regression in practice, but not a change in
subscription semantics: the Exclusive mapping for response/notify is
identical between releases. The regression is that PR #822 split
flow-svc out of config-svc and added this new, long-lived
request/response call site — the new site simply didn't follow the
uuid convention used by the equivalent sites elsewhere
(gateway/config/receiver.py, AsyncProcessor._create_config_client).
Fix: generate a fresh uuid per process instance for the subscription
suffix, matching that convention.
|
||
|---|---|---|
| .. | ||
| agent | ||
| chunking | ||
| config/service | ||
| cores | ||
| decoding | ||
| direct | ||
| embeddings | ||
| external | ||
| extract | ||
| flow | ||
| gateway | ||
| librarian | ||
| metering | ||
| model | ||
| processing | ||
| prompt | ||
| query | ||
| retrieval | ||
| rev_gateway | ||
| storage | ||
| tables | ||
| template | ||
| tool_service | ||
| __init__.py | ||