Hi

Read locks over various file systems can be tricky. If you can then
get the other party to write a 2nd done file when the file write is
complete. Then you only start consuming the file if there is a "done"
file as well.

Also you can try readLock=change which detects if the file size / date
hasn't updated in a "period" then it assume the file write is done,
and the consumer can pickup the file.

On Mon, Apr 28, 2014 at 11:43 PM, rrajen2 <[email protected]> wrote:
> Hi
>  Below is my envmt of Camel application deployment
>
> OS: Suse Linux 2.6.34.7-0.3
> File System nodes: Distributed file system based out of NAS mounted through
> NFS. They are mounted on 2 Linux nodes though Camel only runs in one of the
> node.
>
> There is a file reader as shown below:
>
> from("file:{{fmsSys.root.ClientFile.Mailbox}}?noop=true&recursive=true&sortBy=file:modified"
> +
>
> "&idempotentKey=${file:name}-${file:size}-${date:now:yyyyMMddssSSS}" +
>                  "&readLock=changed"+
>                  "&preMove={{fmsSys.root.File.InProgress.In}}/${file:name}"
> +
>
> "&antInclude={{fmsSys.root.ClientFile.Mailbox.AntIncludeDir}}" +
>
> "&antExclude={{fmsSys.root.ClientFile.Mailbox.AntExcludeDir}}").routeId("CommonMailboxReader")
>                 .routeId("ClientMailboxReader")
>                 .setHeader(FMSHeaders.FILE_ORIGIN,
> constant(FileOriginType.EXTERNAL))
>                 .setHeader(FMSHeaders.INBOUND_FILE_PATH,
> header(Exchange.FILE_PATH))
>
> .to("log:ClientMailboxReader?level=DEBUG&showExchangeId=true&showHeaders=true&showProperties=true&multiline=true&showFiles=true")
>             .threads()
>             .to("seda:RegisterFile")
>         ;
>
> Issue:
>  If the file size is large (about 750MB) whereby you have a slow writer and
> if FTP transferred/Linux copied to Camel Linux node, the above code works
> fine by getting the ExclusiveRead Lock and doing the premove of the file
> completely. However if the same file is FTP transferrered/Linux copied to
> non Camel Linux node (acting just as a file mount), it does a premove
> wrongly whereby only partial file is moved (ie about 500MB).
>
> Options tried:
>  1)readLock=markerFile //doesn't even work
>  2)readLock=rename// doesn't work even on the Camel linux node
>  3)I did read the section titled "Consuming files from folders where others
> drop files directly" on the page http://camel.apache.org/file2.html, which
> didn't assist me further.
>
> Please advice what could be done to make it work?
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Issues-with-Exclusive-File-ReadLock-tp5750661.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: [email protected]
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Reply via email to