Skip to content

Dealing with timeouts should not cause interactions to hang forever. #614

@bnouwt

Description

@bnouwt

When a timeout occurs, because another Knowledge Base does not respond within 10s (default timeout value for KB responses) to a POST KI, the knowledge engine will not deal with this error correctly. Errors like the ones below are thrown and the Post KI hangs indefinitely.

sensor2-ker-1  | 2025-02-18 08:31:53:177 +0000 [qtp1288354730-22] INFO SmartConnectorImpl-sensor2-kb - Planning post for KI <http://example.org/sensor2-kb/interaction/0d11f7a6-0557-4736-8ec4-00b393b6c7da>.
sensor2-ker-1  | 2025-02-18 08:32:03:267 +0000 [CompletableFutureDelayScheduler] WARN ReasonerProcessor - Error 'TimeoutException' occurred while waiting for response to message: efda5d65-22b1-4012-81c9-7cc98b679fbc
sensor2-ker-1  | 2025-02-18 08:32:03:268 +0000 [CompletableFutureDelayScheduler] ERROR ReasonerProcessor - Executing (scheduled) tasks for the reasoner should not result in errors.
sensor2-ker-1  | java.util.concurrent.CompletionException: java.lang.ClassCastException: class eu.knowledge.engine.smartconnector.messaging.AnswerMessage cannot be cast to class eu.knowledge.engine.smartconnector.messaging.ReactMessage (eu.knowledge.engine.smartconnector.messaging.AnswerMessage and eu.knowledge.engine.smartconnector.messaging.ReactMessage are in unnamed module of loader 'app')
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2920)
sensor2-ker-1  |        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
sensor2-ker-1  |        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
sensor2-ker-1  |        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
sensor2-ker-1  |        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
sensor2-ker-1  |        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
sensor2-ker-1  |        at java.base/java.lang.Thread.run(Thread.java:1583)
sensor2-ker-1  | Caused by: java.lang.ClassCastException: class eu.knowledge.engine.smartconnector.messaging.AnswerMessage cannot be cast to class eu.knowledge.engine.smartconnector.messaging.ReactMessage (eu.knowledge.engine
sensor2-ker-1  |        at eu.knowledge.engine.smartconnector.impl.ReasonerProcessor$ReactBindingSetHandler.lambda$handle$0(ReasonerProcessor.java:547)
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
sensor2-ker-1  |        ... 10 more
sensor2-ker-1  | 2025-02-18 08:32:03:269 +0000 [CompletableFutureDelayScheduler] ERROR MessageRouterImpl-sensor2-kb - KB 'http://example.org/converter-kb' did not respond within 10s to PostMessage 'efda5d65-22b1-4012-81c9-7cc98b679fbc'.                                                                                                                                                                    da5d65-22b1-4012-81c9-7ccsensor2-ker-1  | java.util.concurrent.TimeoutException
sensor2-ker-1  |        at java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2920)
sensor2-ker-1  |        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
sensor2-ker-1  |        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
sensor2-ker-1  |        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
sensor2-ker-1  |        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
sensor2-ker-1  |        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
sensor2-ker-1  |        at java.base/java.lang.Thread.run(Thread.java:1583)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions