Hi

That is because you do something in the custom processor that locks the file.
You need to make sure you close the file / input stream etc that you
may be doing.

On Mon, Mar 7, 2022 at 9:14 AM Reto Peter <reto.pe...@advanceit.ch> wrote:
>
> I am trying to convert an EDIFACT file into an XML file.
>
> The conversion is done with smooks. The conversion works fine. The target 
> file is successfully converted and also written to the disk.
>
> The problem arises after when Camel try to move the file to the .camel subdir.
>
> The source file is copied to the subdir, but the original file cannot be 
> deleted.
>
>
>
> Environment: Windows 10, Java 11, Camel 3.15, Smooks 2.0.0RC1, running in 
> eclipse
>
> If I omit the line with “.process(processor)”, the file can be moved/deleted. 
> But with executing the smooks step it always gives me error messages, 
> (attached at the end of this post)
>
>
>
> Following code shows the main program:
>
>        public static void main(String[] args) throws Exception {
>
>               CamelContext context = new DefaultCamelContext();
>
>               context.addRoutes(new RouteBuilder() {
>
>
>
>                      @Override
>
>                      public void configure() throws Exception {
>
>
>
>                            Smooks smooks = new Smooks();
>
>                            smooks.setReaderConfig(new 
> EdifactReaderConfigurator("/d01b/EDIFACT-Messages.dfdl.xsd"));
>
>                            smooks.setExports(new Exports(StringResult.class));
>
>                            SmooksProcessor processor = new 
> SmooksProcessor(smooks, context);
>
>
>
>                            
> from("file://C:/data/MediaMarkt/ORDERS/in?delay=1000")
>
>                                   .process(processor)
>
>                                   
> .to("file://C:/data/MediaMarkt/ORDERS/out/?fileName=${file:name}.xml");
>
>                     }
>
>
>
>              });
>
>              context.start();
>
>              Thread.sleep(20000);
>
>              context.close();
>
>
>
>        }
>
>
>
> Error message:
>
> [                          main] Scanner                        WARN  Not 
> scanning classpath for ClassLoader 
> 'jdk.internal.loader.ClassLoaders$AppClassLoader'.  ClassLoader must 
> implement 'java.net.URLClassLoader'.
>
> [                          main] Scanner                        WARN  Not 
> scanning classpath for ClassLoader 
> 'jdk.internal.loader.ClassLoaders$AppClassLoader'.  ClassLoader must 
> implement 'java.net.URLClassLoader'.
>
> [                          main] SmooksProcessor                WARN  
> Attachments module could not be found: attachments will not be propagated
>
> [                          main] SmooksProcessor                INFO  
> SmooksProcessor [configUri=null] Started
>
> [                          main] SmooksProcessor                WARN  
> Attachments module could not be found: attachments will not be propagated
>
> [                          main] SmooksProcessor                INFO  
> SmooksProcessor [configUri=null] Started
>
> [                          main] SmooksProcessor                WARN  
> Attachments module could not be found: attachments will not be propagated
>
> [                          main] SmooksProcessor                INFO  
> SmooksProcessor [configUri=null] Started
>
> [                          main] SmooksProcessor                WARN  
> Attachments module could not be found: attachments will not be propagated
>
> [                          main] SmooksProcessor                INFO  
> SmooksProcessor [configUri=null] Started
>
> [                          main] SmooksProcessor                WARN  
> Attachments module could not be found: attachments will not be propagated
>
> [                          main] SmooksProcessor                INFO  
> SmooksProcessor [configUri=null] Started
>
> [                          main] AbstractCamelContext           INFO  Routes 
> startup (total:1 started:1)
>
> [                          main] AbstractCamelContext           INFO      
> Started route1 (file://C:/data/MediaMarkt/ORDERS/in)
>
> [                          main] AbstractCamelContext           INFO  Apache 
> Camel 3.15.0 (camel-1) started in 193ms (build:36ms init:136ms start:21ms)
>
> CamelContext status: Started
>
> [//C:/data/MediaMarkt/ORDERS/in] DataProcessorFactory           INFO  
> Compiling and caching DFDL schema...
>
> [//C:/data/MediaMarkt/ORDERS/in] GenericFileOnCompletion        WARN  Error 
> during commit. Exchange[0C5E19CEB8FC187-0000000000000000]. Caused by: 
> [org.apache.camel.component.file.GenericFileOperationFailedException - Error 
> renaming file from C:\data\MediaMarkt\ORDERS\in\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi to 
> C:\data\MediaMarkt\ORDERS\in\.camel\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi]
>
> org.apache.camel.component.file.GenericFileOperationFailedException: Error 
> renaming file from C:\data\MediaMarkt\ORDERS\in\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi to 
> C:\data\MediaMarkt\ORDERS\in\.camel\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi
>
>        at 
> org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:93)
>  ~[camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.strategy.GenericFileProcessStrategySupport.renameFile(GenericFileProcessStrategySupport.java:145)
>  ~[camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy.commit(GenericFileRenameProcessStrategy.java:121)
>  ~[camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:134)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:86)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:60)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.support.UnitOfWorkHelper.doneSynchronization(UnitOfWorkHelper.java:104)
>  [camel-support-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.support.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:93)
>  [camel-support-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.DefaultUnitOfWork.done(DefaultUnitOfWork.java:238)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.support.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:61) 
> [camel-support-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:778)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:713)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.CamelInternalProcessor$AsyncAfterTask.done(CamelInternalProcessor.java:264)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at org.apache.camel.AsyncCallback.run(AsyncCallback.java:44) 
> [camel-api-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:184) 
> [camel-core-processor-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
>  [camel-base-engine-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:492)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:245)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:206)
>  [camel-file-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
>  [camel-support-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
>  [camel-support-3.15.0.jar:3.15.0]
>
>        at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
>
>        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) 
> [?:?]
>
>        at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
>  [?:?]
>
>        at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
>  [?:?]
>
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
>  [?:?]
>
>        at java.lang.Thread.run(Thread.java:832) [?:?]
>
> Caused by: java.io.IOException: Renaming file from 
> 'C:\data\MediaMarkt\ORDERS\in\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi' to 
> 'C:\data\MediaMarkt\ORDERS\in\.camel\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi' failed: 
> Cannot delete file 'C:\data\MediaMarkt\ORDERS\in\ORDERS 
> 000397700717-000397700717.2802b732-98b2-11ec-99b2-8e02ac1b4884.edi' after 
> copy succeeded
>
>        at 
> org.apache.camel.util.FileUtil.renameFileUsingCopy(FileUtil.java:464) 
> ~[camel-util-3.15.0.jar:3.15.0]
>
>        at org.apache.camel.util.FileUtil.renameFile(FileUtil.java:436) 
> ~[camel-util-3.15.0.jar:3.15.0]
>
>        at 
> org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:90)
>  ~[camel-file-3.15.0.jar:3.15.0]
>
>        ... 28 more
>
>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to