Skip to content

Commit 6ba029c

Browse files
fix: add exclude_list to @trace_class on high-frequency event classes
Addresses #1034 — the @trace_class decorator on EventQueue and related classes generates 1500+ spans per LLM streaming session from high-frequency internal methods (enqueue_event, dequeue_event, task_done, etc.). Added exclude_list to @trace_class on: - EventQueueLegacy: excludes enqueue_event, dequeue_event, task_done, is_closed - EventQueueSource: excludes enqueue_event, dequeue_event, task_done, is_closed - EventConsumer: excludes consume_all - InMemoryQueueManager: excludes add, get, create_or_tap This reduces tracing spans from 1500+ to ~53 per session (97% reduction) while preserving useful RequestHandler-level traces. The existing exclude_list mechanism in trace_class is used — no new API surface or breaking changes.
1 parent c0c6c08 commit 6ba029c

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/a2a/server/events/event_consumer.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
logger = logging.getLogger(__name__)
1919

2020

21-
@trace_class(kind=SpanKind.SERVER)
21+
@trace_class(
22+
kind=SpanKind.SERVER,
23+
exclude_list=['consume_all'],
24+
)
2225
class EventConsumer:
2326
"""Consumer to read events from the agent event queue."""
2427

src/a2a/server/events/event_queue.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ async def enqueue_event(self, event: Event) -> None:
9393
"""
9494

9595

96-
@trace_class(kind=SpanKind.SERVER)
96+
@trace_class(
97+
kind=SpanKind.SERVER,
98+
exclude_list=['enqueue_event', 'dequeue_event', 'task_done', 'is_closed'],
99+
)
97100
class EventQueueLegacy(EventQueue):
98101
"""Event queue for A2A responses from agent.
99102

src/a2a/server/events/event_queue_v2.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
logger = logging.getLogger(__name__)
2121

2222

23-
@trace_class(kind=SpanKind.SERVER)
23+
@trace_class(
24+
kind=SpanKind.SERVER,
25+
exclude_list=['enqueue_event', 'dequeue_event', 'task_done', 'is_closed'],
26+
)
2427
class EventQueueSource(EventQueue):
2528
"""The Parent EventQueue.
2629

src/a2a/server/events/in_memory_queue_manager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
from a2a.utils.telemetry import SpanKind, trace_class
1010

1111

12-
@trace_class(kind=SpanKind.SERVER)
12+
@trace_class(
13+
kind=SpanKind.SERVER,
14+
exclude_list=['add', 'get', 'create_or_tap'],
15+
)
1316
class InMemoryQueueManager(QueueManager):
1417
"""InMemoryQueueManager is used for a single binary management.
1518

0 commit comments

Comments
 (0)