Using Mule EE, I have the following project;
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:jdbc-ee="http://www...
<smtp:gmail-connector name="gmail" doc:name="Gmail"/>
<db:mysql-config name="MySQL_Configuration" host="localhost"
port="3306" database="dbflow"
doc:name="MySQL Configuration" user="user" password="Pass"/>
<data-mapper:config name="CSV_To_XML" transformationGraphPath="csv_to_xml.grf" doc:name="CSV_To_XML"/>
<ftp:connector name="FTP" pollingFrequency="1000" validateConnections="true" moveToDirectory= "C:\Users\User\Desktop\output" doc:name="FTP"/>
<flow name="dbFlow1" doc:name="dbFlow1">
<ftp:inbound-endpoint host="localhost" port="21" path="/{path}" user="username" password="pass" responseTimeout="10000" doc:name="FTP" connector-ref="FTP"/>
<data-mapper:transform config-ref="CSV_To_XML" doc:name="CSV To XML"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<foreach collection="#[xpath('//info')]" doc:name="For Each">
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<db:insert config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[INSERT INTO `dbflow`.`user_table`
(`my_date`,
`serialnumber`,
`gender`,
`fullname`,
`email`,
`mobilenumber`,
`address`)
VALUES
(#[xpath://date],
#[xpath://serialnumber],
#[xpath://gender],
#[xpath://fullname],
#[xpath://email],
#[xpath://mobilenumber],
#[xpath://address]
);]]></db:parameterized-query>
</db:insert>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="count" value="#[flowVars.counter]"/>
</message-properties-transformer>
</foreach>
<logger message="Number of records #[flowVars]" level="INFO" doc:name="Logger"/>
<smtp:outbound-endpoint host="smtp.gmail.com" port="587" user="user10%40gmail.com" password="pass" connector-ref="gmail" to="user2@gmail.com" subject=Muleapp" responseTimeout="10000" doc:name="Email"/>
</flow>
</mule>
It works correctly. However, when I add the FTP connector to use moveToDirectory
, Mule is giving me the following error with NON-STOP! the file is moved to the directory I want, but Mule is giving same error infinity times! It won't stop unless I stop running Mule!
And Mule doesn't continue with the flow (inserting in DB & sending email);
ERROR 2014-08-03 21:00:56,113 [[tests].FTP.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
at org.mule.work.WorkerContext.run(WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:57,138 [[tests].FTP.receiver.01] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
at org.mule.work.WorkerContext.run(WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:58,064 [[tests].FTP.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
at org.mule.work.WorkerContext.run(WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:58,491 [[tests].dbFlow1.stage1.03] org.mule.exception.DefaultMessagingExceptionStrategy:
********************************************************************************
Message : Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException). Message payload is of type: String
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException)
sun.reflect.NativeConstructorAccessorImpl:-2 (null)
2. Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException). Message payload is of type: String (org.mule.api.MessagingException)
org.mule.module.db.internal.processor.AbstractDbMessageProcessor:81 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '546565' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
The content of mytest.csv is like: (DB same columns and serialnumber is primary key)
date|serialnumber|gender|fullname|email|mobilenumber|address
03-07-2014|546565|m|your name|my@mail.com|219239|my address
I've tried to use #[message.inboundProperties.originalFilename]
and outputPattern="#[header:originalFilename]"
. maybe those are wrong but anyways, Mule keeps showing same error with no changes!
The point is to move the file from FTP to local PC, and insert it in DB then email. (both roads together). Any help will be appreciated!