FTP message not recovered after ESB server crash
mihir842in Nov 10, 2014 2:48 AMWhen ESB server crashes immediately after a message was successfully picked up by FTP provider, the message is not recovered after server restart. Hence, the message data is lost in this case. We couldn't find anything in the logging.
Can anyone please help on this issue?
Following are the steps to reproduce it:
a. Upload 250kb message to a tmp directory on FTP server
b. Slow down ESB server in Vmware
c. Move message to actual FTP directory
d. Observe file being renamed to .esbworking
e. Observe file being removed from FTP server
f. Crash the ESB server by issuing “echo c > /proc/sysrq-trigger”
g. Undo server slowdown.
h. Restart server
i. The message is not recovered
Below is the configuration used:
<providers>
<ftp-provider hostname="${xyz.abc.ftp.hostname}:${xyz.abc.ftp.port}" name="XYZFTPProvider">
<ftp-bus busid="XYZRouterFTPGW">
<ftp-message-filter directory="${xyz.abc.ftp.source.dir}"
error-delete="false" error-directory="${xyz.abc.ftp.error.dir}"
error-suffix=".esbERROR" input-suffix=".xml" passive="true"
password="${xyz.abc.ftp.password}"
post-delete="${xyz.abc.ftp.post.delete}"
post-directory="${xyz.abc.ftp.post.dir}" post-rename="true"
username="${xyz.abc.ftp.username}" work-suffix=".esbWORKING"/>
</ftp-bus>
</ftp-provider>
<jms-provider connection-factory="ConnectionFactory" name="JBossMessaging">
<jms-bus busid="XYZABCFTPInternalGWChennel">
<jms-message-filter acknowledge-mode="AUTO_ACKNOWLEDGE"
dest-name="queue/Test.abc.esb.queue" dest-type="QUEUE" transacted="true"/>
</jms-bus>
</jms-provider>
<schedule-provider name="XYZCron">
<cron-schedule cronExpression="0/5 * * * * ?" scheduleid="cron-schedule"/>
</schedule-provider>
</providers>
<services>
<service category="TESTCaterory" description="Interface" name="XYZFTPABCServices" invmScope="GLOBAL" invmTransacted="true">
<listeners>
<ftp-listener busidref="XYZRouterFTPGW" is-gateway="true" name="XYZFTPGateway" scheduleidref="cron-schedule">
<property name="mimeType" value="text/plain"/>
<property name="encoding" value="UTF-8"/>
</ftp-listener>
<jms-listener busidref="XYZABCFTPInternalGWChennel" name="ABCESBListener"/>
</listeners>
<actions mep="OneWay">
<action
class="com.Test.esb.ABC.actionProcessor.TESTABCActionProcessor"
name="IncomingLogger" process="logIncomingMessage"/>
<action
class="org.jboss.soa.esb.actions.naming.FileNameGeneratorAction" name="BuildFilename">
<property name="strategies">
<strategies>
<strategy class="com.Test.esb.ABC.fileNameGeneration.ABCFileNameGenerator"/>
</strategies>
</property>
</action>
…
…
</services>
</jbossesb>