[ https://issues.apache.org/jira/browse/CAMEL-19670?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bartosz Popiela updated CAMEL-19670: ------------------------------------ Description: The recent change introduced in scope of CAMEL-18619 causes Splitter to fail when {code:java} org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition#setUseOriginalBody{code} is set to true. This is because Splitter creates a new Unit of Work and it consumes the stream in {code:java} org.apache.camel.impl.engine.DefaultUnitOfWork#doOnPrepare{code} Subsequently, {code:java} org.apache.camel.impl.engine.CamelInternalProcessor.StreamCachingAdvice#before{code} tries to consume this stream when the split subroute is executed and it fails with: {noformat} org.apache.camel.StreamCacheException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to java.io.IOException: Stream closed at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:960) at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:911) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:335) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:829) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:737) at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181) at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) at org.apache.camel.processor.Pipeline.process(Pipeline.java:165) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392) at org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:269) at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:187) at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:130) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to java.io.IOException: Stream closed at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:60) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:449) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:358) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:202) at org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:226) at org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:217) at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:953) ... 14 common frames omitted Caused by: java.io.IOException: Stream closed at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:176) at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:342) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107) at org.apache.camel.util.IOHelper.copy(IOHelper.java:193) at org.apache.camel.util.IOHelper.copy(IOHelper.java:161) at org.apache.camel.util.IOHelper.copy(IOHelper.java:156) at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:229) at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:225) at org.apache.camel.converter.stream.StreamCacheConverter.convertToStreamCache(StreamCacheConverter.java:54) at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.doConvertTo(StreamCacheBulkConverterLoader.java:78) at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:51) ... 20 common frames omitted{noformat} Please find the unit [test|https://issues.apache.org/jira/browse/CAMEL-19343] attached. It works with Camel 3.20.4 and fails with Camel 3.21.0. was: The recent change introduced in scope of CAMEL-18619 causes Splitter to fail when {code:java} org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition#setUseOriginalBody{code} is set to true. This is because Splitter creates a new Unit of Work and it consumes the stream in {code:java} org.apache.camel.impl.engine.DefaultUnitOfWork#doOnPrepare{code} Subsequently, {code:java} org.apache.camel.impl.engine.CamelInternalProcessor.StreamCachingAdvice#before{code} tries to consume this stream when the split subroute is executed and it fails with: {noformat} org.apache.camel.StreamCacheException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to java.io.IOException: Stream closed at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:960) at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:911) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:335) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:829) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:737) at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181) at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) at org.apache.camel.processor.Pipeline.process(Pipeline.java:165) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392) at org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:269) at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:187) at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:130) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required type: org.apache.camel.StreamCache with value org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to java.io.IOException: Stream closed at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:60) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:449) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:358) at org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:202) at org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:226) at org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:217) at org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:953) ... 14 common frames omitted Caused by: java.io.IOException: Stream closed at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:176) at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:342) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107) at org.apache.camel.util.IOHelper.copy(IOHelper.java:193) at org.apache.camel.util.IOHelper.copy(IOHelper.java:161) at org.apache.camel.util.IOHelper.copy(IOHelper.java:156) at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:229) at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:225) at org.apache.camel.converter.stream.StreamCacheConverter.convertToStreamCache(StreamCacheConverter.java:54) at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.doConvertTo(StreamCacheBulkConverterLoader.java:78) at org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:51) ... 20 common frames omitted{noformat} Please find the unit test attached. It works with Camel 3.20.4 and fails with Camel 3.21.0. > Splitter fails with "Caused by: java.io.IOException: Stream closed" > ------------------------------------------------------------------- > > Key: CAMEL-19670 > URL: https://issues.apache.org/jira/browse/CAMEL-19670 > Project: Camel > Issue Type: Bug > Components: camel-core-engine > Affects Versions: 3.21.0 > Reporter: Bartosz Popiela > Priority: Major > > The recent change introduced in scope of CAMEL-18619 causes Splitter to fail > when > {code:java} > org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition#setUseOriginalBody{code} > is set to true. This is because Splitter creates a new Unit of Work and it > consumes the stream in > {code:java} > org.apache.camel.impl.engine.DefaultUnitOfWork#doOnPrepare{code} > Subsequently, > {code:java} > org.apache.camel.impl.engine.CamelInternalProcessor.StreamCachingAdvice#before{code} > tries to consume this stream when the split subroute is executed and it fails > with: > {noformat} > org.apache.camel.StreamCacheException: Error during type conversion from > type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the > required type: org.apache.camel.StreamCache with value > org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to > org.apache.camel.TypeConversionException: Error during type conversion from > type: org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the > required type: org.apache.camel.StreamCache with value > org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to > java.io.IOException: Stream closed > at > org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:960) > at > org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:911) > at > org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:335) > at > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:829) > at > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:737) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:165) > at > org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392) > at > org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:269) > at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:187) > at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:130) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.base/java.lang.Thread.run(Thread.java:829) > Caused by: org.apache.camel.TypeConversionException: Error during type > conversion from type: > org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper to the required > type: org.apache.camel.StreamCache with value > org.apache.camel.dataformat.zipfile.ZipInputStreamWrapper@20ac325b due to > java.io.IOException: Stream closed > at > org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:60) > at > org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:449) > at > org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:358) > at > org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:202) > at > org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:226) > at > org.apache.camel.impl.engine.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:217) > at > org.apache.camel.impl.engine.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:953) > ... 14 common frames omitted > Caused by: java.io.IOException: Stream closed > at > java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:176) > at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:342) > at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107) > at org.apache.camel.util.IOHelper.copy(IOHelper.java:193) > at org.apache.camel.util.IOHelper.copy(IOHelper.java:161) > at org.apache.camel.util.IOHelper.copy(IOHelper.java:156) > at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:229) > at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:225) > at > org.apache.camel.converter.stream.StreamCacheConverter.convertToStreamCache(StreamCacheConverter.java:54) > at > org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.doConvertTo(StreamCacheBulkConverterLoader.java:78) > at > org.apache.camel.converter.stream.StreamCacheBulkConverterLoader.convertTo(StreamCacheBulkConverterLoader.java:51) > ... 20 common frames omitted{noformat} > Please find the unit [test|https://issues.apache.org/jira/browse/CAMEL-19343] > attached. It works with Camel 3.20.4 and fails with Camel 3.21.0. -- This message was sent by Atlassian Jira (v8.20.10#820010)