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)

Reply via email to