diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java b/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java index ad453f70e..4e86d53f6 100644 --- a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java +++ b/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java @@ -162,6 +162,9 @@ public EventKind onMessageSend(MessageSendParams params) throws JSONRPCError { ResultAggregator.EventTypeAndInterrupt etai = null; try { EventConsumer consumer = new EventConsumer(queue); + + // This callback must be added before we start consuming. Otherwise, + // any errors thrown by the producerRunnable are not picked up by the consumer producerRunnable.addDoneCallback(consumer.createAgentRunnableDoneCallback()); etai = resultAggregator.consumeAndBreakOnInterrupt(consumer); @@ -204,8 +207,9 @@ public Flow.Publisher onMessageSendStream(MessageSendParams try { EventConsumer consumer = new EventConsumer(queue); + // This callback must be added before we start consuming. Otherwise, + // any errors thrown by the producerRunnable are not picked up by the consumer producerRunnable.addDoneCallback(consumer.createAgentRunnableDoneCallback()); - Flow.Publisher results = resultAggregator.consumeAndEmit(consumer); Flow.Publisher eventPublisher =