Hi We have not heard about this before. The stacktrace error seems a bit weird. Are you sure you are using all the same versions of Camel JARs?
On Sun, Feb 8, 2026 at 12:59 AM Dark Knight <[email protected]> wrote: > Hi All, > > > I’m seeing a java.lang.ClassCastException in > PooledProcessorExchangeFactory when > using the Splitter with exchange pooling enabled in Camel 4.17.0. > > The same code works in Camel 4.3.0, so I suspect this might be a > regression. > > > Callstack: > > Caused by: java.lang.ClassCastException: class > org.apache.camel.support.MonotonicClock cannot be cast to class > org.apache.camel.support.ResetableClock > (org.apache.camel.support.MonotonicClock and > org.apache.camel.support.ResetableClock are in unnamed module of loader > 'app') > > at > > org.apache.camel.impl.engine.PooledProcessorExchangeFactory.createCopy(PooledProcessorExchangeFactory.java:76) > > at > > org.apache.camel.processor.Splitter.copyAndPrepareSubExchange(Splitter.java:314) > > at > > org.apache.camel.processor.Splitter$SplitterIterable.<init>(Splitter.java:178) > > at > > org.apache.camel.processor.Splitter.createProcessorExchangePairsIterable(Splitter.java:152) > > at > > org.apache.camel.processor.Splitter.createProcessorExchangePairs(Splitter.java:140) > > at > > org.apache.camel.processor.MulticastProcessor.doProcess(MulticastProcessor.java:336) > > at > > org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:328) > > at org.apache.camel.processor.Splitter.process(Splitter.java:126) > > > Test Code: > > public class SplitterPolledExchangeTest extends CamelTestSupport { > > > @Override > > protected RoutesBuilder createRouteBuilder() { > > return new RouteBuilder() { > > @Override > > public void configure() { > > from("direct:processData") > > .split(body()).streaming().parallelProcessing() > > .to("mock:result"); > > } > > }; > > } > > > @Override > > protected CamelContext createCamelContext() throws Exception { > > CamelContext camelContext = super.createCamelContext(); > > ExtendedCamelContext ecc = camelContext.getCamelContextExtension(); > > > ecc.setExchangeFactory(new PooledExchangeFactory()); > > ecc.setProcessorExchangeFactory(new > PooledProcessorExchangeFactory()); > > ecc.getExchangeFactory().setStatisticsEnabled(true); > > ecc.getProcessorExchangeFactory().setStatisticsEnabled(true); > > > return camelContext; > > } > > > @Test > > public void testSplitter() throws Exception { > > List<Integer> data = new ArrayList<>(Arrays.asList(1, 2, 3)); > > > getMockEndpoint("mock:result").expectedMessageCount(3); > > template.sendBody("direct:processData", data); > > > MockEndpoint.assertIsSatisfied(context); > > } > > } > > Camel Version: 4.17.0 > > Java Version: 17 > > > Is this expected behavior, or is this a bug in Camel 4.17.0? > Are there recommended workarounds for using the Splitter with exchange > pooling enabled? > > > Thanks, > > DK > -- Claus Ibsen
