[
https://issues.apache.org/jira/browse/CAMEL-25346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-25346.
---------------------------------
Resolution: Fixed
> camel-console - a dev console capacity set from configuration breaks the
> trace, receive, event and sql-trace consoles
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25346
> URL: https://issues.apache.org/jira/browse/CAMEL-25346
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 4.18.4, 4.22.1
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Major
> Fix For: 4.23.0
>
>
> Camel Main applies {{camel.devConsole.<id>.*}} after resolving the console
> through the registry ({{BaseMainSupport.setDevConsoleProperties}}), and
> {{DefaultDevConsoleRegistry.register}} has already started it. {{doInit()}}
> therefore allocated the console buffers with the default capacity, while the
> console keeps using the configured {{capacity}} field:
> * {{trace}} (default 100): the first dump fills the queue, every later dump
> fails with {{java.lang.IllegalStateException: Queue full}}
> ({{TraceDevConsole.addMessage}}) - trace snapshots stop for the life of the
> application.
> * {{receive}} (default 100): the same {{Queue full}}, thrown into the
> exchange of the received message.
> * {{event}} (default 25): {{ArrayIndexOutOfBoundsException: Index 25 out of
> bounds for length 25}}, when recording events and on every dump.
> * {{sql-trace}} (default 200): {{ArrayIndexOutOfBoundsException: Index 999
> out of bounds for length 200}} on every dump.
> Found while soak-testing Kaoto Kompanion with camel-cli-connector and
> {{-Dcamel.devConsole.trace.capacity=1000}}: the connector swallows the
> exception (logged at TRACE) and no more traces reach the tool.
> {noformat}
> java.lang.IllegalStateException: Queue full
> at java.util.AbstractQueue.add(AbstractQueue.java:98)
> at
> org.apache.camel.impl.console.TraceDevConsole.addMessage(TraceDevConsole.java:147)
> at
> org.apache.camel.impl.console.TraceDevConsole.doCallJson(TraceDevConsole.java:161)
> at
> org.apache.camel.support.console.AbstractDevConsole.call(AbstractDevConsole.java:115)
> at
> org.apache.camel.cli.connector.LocalCliConnector.callConsole(LocalCliConnector.java:1697)
> {noformat}
> Proposed fix: {{setCapacity}} resizes the buffers of a started console,
> keeping the newest entries, and the consoles index their buffers by their
> actual size. Defaults and the capacity validation in {{doInit}} are
> unchanged, so configurations that work today keep working.
> _Claude Code on behalf of Croway_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)