[ 
https://issues.apache.org/jira/browse/CAMEL-23975?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-23975.
---------------------------------
    Resolution: Not A Bug

> java.util.concurrent.RejectedExecutionException: CamelContext is stopped  : 
> at runTime (Hazelcast MapLoader Calls Route with producer Template))
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-23975
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23975
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 4.10.9
>         Environment: Prod
>            Reporter: NITESH KUMAR
>            Priority: Major
>
> Hi Team,
> I am facing an issue with an Apache Camel application running on Spring Boot 
> in a clustered environment and would appreciate your guidance.
> *🔧* *Setup Details*
>  * *Framework:* Spring Boot(3.5x) with Apache Camel (4.10.9)
>  * *Deployment:* 5 EC2 instances running the same service
>  * *Caching:* Embedded Hazelcast cluster (5.5.0)
>  * *Usage:* Hazelcast distributed IMap with a custom MapLoader implementation
> *⚠️* *Issue Description*
> During application startup, specifically while Hazelcast performs {*}initial 
> cache population{*}, we intermittently encounter the following exception:
> java.util.concurrent.RejectedExecutionException: CamelContext is stopped
>  
> But My IMaps are LAZY  and executes at the time of message processing 
> indicates routes & camel Context are up 
> Note : This Exception We Also gets intermittently  when cache reloads after 
> eviction.
> *🔍* *Stack Trace (Relevant Section)*
> at 
> com.hazelcast.map.impl.MapStoreWrapper.lambda$load$7(MapStoreWrapper.java:176)
>         at 
> com.hazelcast.internal.namespace.NamespaceUtil.callWithClassLoader(NamespaceUtil.java:200)
>         at 
> com.hazelcast.internal.namespace.NamespaceUtil.callWithOwnClassLoader(NamespaceUtil.java:152)
>         at 
> com.hazelcast.map.impl.MapStoreWrapper.load(MapStoreWrapper.java:176)
>         at 
> com.hazelcast.map.impl.mapstore.writethrough.WriteThroughStore.load(WriteThroughStore.java:88)
>         at 
> com.hazelcast.map.impl.mapstore.writethrough.WriteThroughStore.load(WriteThroughStore.java:31)
>         at 
> com.hazelcast.map.impl.recordstore.DefaultRecordStore.loadValueWithExpiry(DefaultRecordStore.java:494)
>         at 
> com.hazelcast.map.impl.operation.steps.GetOpSteps$2.runStep(GetOpSteps.java:58)
>         at 
> com.hazelcast.map.impl.operation.steps.GetOpSteps$2.runStep(GetOpSteps.java:48)
>         at 
> com.hazelcast.map.impl.operation.steps.engine.StepSupplier.runStepWithState(StepSupplier.java:203)
>         at 
> com.hazelcast.map.impl.operation.steps.engine.StepSupplier$1.run(StepSupplier.java:146)
>         at 
> com.hazelcast.internal.namespace.impl.NoOpUserCodeNamespaceService.runWithNamespace(NoOpUserCodeNamespaceService.java:82)
>         at 
> com.hazelcast.internal.namespace.NamespaceUtil.runWithNamespace(NamespaceUtil.java:106)
>         at 
> com.hazelcast.map.impl.operation.steps.engine.StepRunner.runDirect(StepRunner.java:234)
>         at 
> com.hazelcast.map.impl.operation.steps.engine.StepRunner.run(StepRunner.java:176)
>         at 
> com.hazelcast.internal.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:220)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>         at java.base/java.lang.Thread.run(Thread.java:833)
>         at 
> com.hazelcast.internal.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)
>         at 
> com.hazelcast.internal.util.executor.PoolExecutorThreadFactory$ManagedThread.executeRun(PoolExecutorThreadFactory.java:74)
>         at 
> com.hazelcast.internal.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:111)
> Caused by: java.util.concurrent.RejectedExecutionException: CamelContext is 
> stopped
>         at 
> org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:155)
>         at 
> org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:175)
>         at 
> org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:171)
>         at 
> org.apache.camel.impl.engine.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:413)
>         ... 25 common frames omitted
> *🔍* *Key Implementation Detail*
> We are using a custom Hazelcast MapLoader, where:
>  * loadAllKeys() is triggered during first message processing as maps are 
> lazy. (indirectly camel is fully UP)
>  * Inside loadAllKeys(), we invoke a Camel route using ProducerTemplate
> *Example:*
> Java
> @Override
> public Iterable<K> loadAllKeys() {
> producerTemplate.requestBody("direct:loadKeysRoute", payload);
> return keys;
> }
>  
> *🔍* *Observations*
>  * Issue occurs primarily during *initial cache loading*
>  * Sometimes observed during steady-state runtime
>  * Occurs across multiple EC2 nodes concurrently
>  * No explicit shutdown or stop is triggered from application code
>  * CamelContext stops automatically after the exception
>  * Suspected causes:
>  * Interaction between Hazelcast-managed threads and Camel execution
>  
> *📉* *Impact*
>  * Message processing is interrupted
>  
> *✅* *Request*
> Kindly help with:
>  * Root cause analysis
>  * Recommended configuration or architectural changes
>  * Preventive measures to avoid CamelContext shutdown in such scenarios
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to