shashank created CAMEL-26906:
--------------------------------
Summary: camel-core - an Error of a timer listener or a periodic
task stops TimerListenerManager, so no listener or task runs again
Key: CAMEL-26906
URL: https://issues.apache.org/jira/browse/CAMEL-26906
Project: Camel
Issue Type: Bug
Components: camel-core
Reporter: shashank
Assignee: shashank
Follow-up of CAMEL-26741, named in the PR of CAMEL-26881 (the purge task of the
Aggregate EIP). {{TimerListenerManager}} calls its listeners from a task
scheduled with {{scheduleAtFixedRate}}, and catches only {{Exception}} around
each {{onTimer}}. An {{Error}} that is not a {{VirtualMachineError}} (such as a
{{NoClassDefFoundError}} or an {{AssertionError}}) thrown by one listener ends
the scheduled task: the executor does not schedule it again, nothing is logged,
and no listener is called again until the CamelContext restarts.
Two services extend {{TimerListenerManager}}:
* {{DefaultPeriodTaskScheduler}}, which runs the tasks scheduled with
{{schedulePeriodTask}}: the secret refresh tasks of the AWS, GCP, Azure Key
Vault and Hashicorp vaults and of Spring Cloud Config, the lock renewal of the
camel-azure-servicebus consumer (PEEK_LOCK) and the clipboard reload of
camel-jbang. An {{Error}} of one task stops all of them, for example an
{{Error}} of a vault refresh task also stops the lock renewal of the Service
Bus consumers, so the locks of long-running exchanges expire and their messages
are delivered again;
* {{ManagedLoadTimer}}, which updates the load statistics of JMX when they are
enabled (off by default).
CAMEL-26537 fixed the other way this timer stopped for good (a listener added
or removed while it runs).
Expected: as for an exception, the {{Error}} is logged (at WARN, as the timer
stopped without a log line before) and ignored, so the other listeners in that
run and the next runs are still called; a {{VirtualMachineError}} is left as
before.
Found while going through the follow-ups of CAMEL-26741; confirmed with tests
on the real classes ({{TimerListenerManagerTest}}, {{PeriodTaskSchedulerTest}}:
no listener is called after the {{Error}}).
_Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)