Andrea Cosentino created CAMEL-23459:
----------------------------------------
Summary: camel-docling: Add TTL cleanup for pending async tasks to
prevent memory leak
Key: CAMEL-23459
URL: https://issues.apache.org/jira/browse/CAMEL-23459
Project: Camel
Issue Type: Improvement
Components: camel-docling
Reporter: Andrea Cosentino
{{DoclingComponent}} tracks pending async-conversion task ids in an in-memory
{{ConcurrentHashMap}} that is shared across all producer instances. Entries are
added when {{SUBMIT_ASYNC_CONVERSION}} returns and consumed when
{{CHECK_CONVERSION_STATUS}} reports a terminal state. There is no expiration
mechanism for entries that are never consumed (e.g., the route that submitted
the task crashes, the user simply forgets, the docling-serve task never
completes).
h3. Risk
A long-running Camel application that uses async conversions will accumulate
entries in this map indefinitely, leaking memory.
h3. Proposed change
* Track a creation timestamp alongside each task id
* Add a configurable TTL on {{DoclingComponent}} (e.g., {{asyncTaskTtl}} with a
sensible default such as 24 hours)
* Run a scheduled cleanup task that evicts entries older than the TTL
* Optionally expose a metric for the current size of the map
h3. Acceptance criteria
* New {{asyncTaskTtl}} configuration option on {{DoclingComponent}}, defaulting
to a reasonable value
* Background thread (using Camel's {{ScheduledExecutorService}} infrastructure)
evicts expired entries
* Eviction is logged at DEBUG with task id and age
* Unit test verifies eviction after the configured TTL
* {{docling-component.adoc}} documents the option and the rationale
--
This message was sent by Atlassian Jira
(v8.20.10#820010)