I have a situation where we're trying to process around 200 files by picking them up from an sftp 'in' folder, processing them, and then moving them to another 'out' folder after the processing is completed.
However the files are being moved by wso2 directly to the 'out' folder without being processed. This happens even though it's processing all the files one by one and not all at a time. We even tried adding a file process interval between each file, but still the issue remains. For our setup in prod we have deployed our car using 2 pods in Kubernetes (we even tried with a single pod to no avail).
Edit
Note: This issue happens when the files are put in smb but NOT in local folder. Locally, this integration works as it's supposed to.
Here's how we're defining the proxy for moving the files:
<proxy name="file_read" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<property expression="get-property('transport', 'FILE_NAME')" name="INPUT_FILE_NAME" scope="default" type="STRING"/>
<log>
<property expression="$ctx:INPUT_FILE_NAME" name="Input-filename"/>
</log>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.vfs.Streaming">true</parameter>
<parameter name="transport.PollInterval">60</parameter>
<parameter name="transport.vfs.MaxRetryCount">1</parameter>
<parameter name="transport.vfs.FileURI">sftp://folder/in?sftpPathFromRoot=true&transport.vfs.AvoidPermissionCheck=true</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.FileProcessInterval">30000</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterFailure">sftp:///folder/error?sftpPathFromRoot=true&transport.vfs.AvoidPermissionCheck=true</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.csv</parameter>
<parameter name="transport.vfs.MoveTimestampFormat">yyyy-MM-dd'T'HH:mm:ss_</parameter>
<parameter name="transport.vfs.MoveAfterProcess">sftp://folder/out?sftpPathFromRoot=true&transport.vfs.AvoidPermissionCheck=true</parameter></proxy>
The Input-filename log prints for each file that is picked up from the 'in' folder, however for those files that are skipped (directly moved to the out folder) the log is not printed.
I've posted about this before. What might be happening?