jeff created CAMEL-6367:
---------------------------

             Summary: The logic in stream producer should sync (lock) and not 
per method which is wrong
                 Key: CAMEL-6367
                 URL: https://issues.apache.org/jira/browse/CAMEL-6367
             Project: Camel
          Issue Type: Bug
          Components: camel-stream
    Affects Versions: 2.11.0
            Reporter: jeff


A new option is available for the stream:file to close it when done 
(closeOnDone). This option is appeared in 2.11 after my jira 
(https://issues.apache.org/jira/browse/CAMEL-6147)

File unlock (or released or closed) looks to doesn't works fine if last line is 
not passed to the endpoint

Example :

We have a CSV with X line. We want to write a part of it in a file out_1.csv 
and a second part in a file out_2.csv according to a business rule, in my 
example the rule is after two lines readed.

An example is : 

from("file://C:/Temp/camel/rep1/?noop=true")
    .log("start process file => ${file:name}")
    .split()
    .tokenize("\n")
        .streaming()
        .process(new Processor() {
         
            public void process(Exchange exchange) throws Exception {
               // After 2 lines, next lines are rejected via an exchange 
property
               i++ ; 
               if( i  > 2)  {
                   exchange.setProperty("FILE_1", true );
               } else {
                   exchange.setProperty("FILE_1", false);
               }
            }
       })
       .choice()
       .when(property("FILE_1").isEqualTo(Boolean.TRUE))
           
.to("stream:file?fileName=C:/Temp/camel/rep1/out/out_1.csv&closeOnDone=true")
       .when(property("FILE_2").isEqualTo(Boolean.TRUE))
            
.to("stream:file?fileName=C:/Temp/camel/rep1/out/out_2.csv&closeOnDone=true")
       .end()
    .end()
.log("end process file => ${file:name}")
.end()
;

It create two files, and out_1.csv is still locked.


Solution : Seems like the logic in stream producer should sync (lock) and not 
per method which is wrong.
Or maybe better yet do not have a shared output stream.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to