You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4 SFTP删除操作执行成功仍报文件不存在错误咨询

SFTP删除报错路径不存在问题排查

报错信息

ERROR 2021-11-11 02:30:55,463 [[MuleRuntime].io.03: [sys-radial].external-radial-sftp-inbound-router--SFTP-Delete-subflow.BLOCKING @31470249] [event: 2ae4cdc0-4269-11ec-8be8-006f0000086f] org.mule.runtime.core.internal.exception.OnErrorContinueHandler: 

--------------------------------------------
Message               : Path '/Inbox/BHBNA_BHBUS_ROMShpmntCntrDtls_20211014214251.xml' doesn't exist.
Element               : external-radial-sftp-inbound-router--SFTP-Delete-subflow/processors/0 @ sys-radial:shared-radial-connectivity/external-radial-sftp-inbound-router.xml:30 (Delete Remote File)
Element XML           : <sftp:delete doc:name="Delete Remote File" doc:id="927f78f9-feb6-462f-8a08-34c73c9b5548" config-ref="External_Radial_SFTP_Config" path="#['${external_sftp.radial.inbound_dir}' ++ vars.filename.^raw]"></sftp:delete>
Error type            : SFTP:ILLEGAL_PATH
Payload Type          : org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider
--------------------------------------------------------------------------------
Root Exception stack trace:
org.mule.runtime.api.exception.MuleRuntimeException: Path '/Inbox/BHBNA_BHBUS_ROMShpmntCntrDtls_20211014214251.xml' doesn't exist
    at org.mule.runtime.extension.api.exception.ModuleException.<init>(ModuleException.java:66)

核心原因

报错本质是执行删除指令时,目标文件已经不在SFTP服务端,你观察到的文件删除成功是首次操作的结果,报错来自后续重复的删除动作,常见触发场景如下:

  • 归档逻辑自带删除能力:如果你的归档操作使用的是SFTP的move指令,或者开启了归档自动清理源文件的配置,归档完成时源文件就已经被删除,后续主动执行的sftp:delete属于冗余步骤,自然找不到目标文件,这是最高发的原因。
  • 同文件处理流程重复触发:Mule SFTP入站轮询如果没有配置合理的文件锁、幂等校验或者轮询间隔,同一个文件可能被两轮轮询同时捕获,分别触发完整处理流程,第一个流程删除文件成功后,第二个流程走到删除步骤就会报路径不存在。
  • 路径拼接异常:当前删除路径的表达式为#['${external_sftp.radial.inbound_dir}' ++ vars.filename.^raw],如果vars.filename存在不可见字符、前后多余空格,或者配置的目录参数大小写、分隔符和服务端实际路径不匹配(Linux环境的SFTP服务端大小写敏感),也会触发该错误。

解决方案

  1. 优先检查归档配置:如果归档逻辑已经会自动删除源文件,直接删除冗余的sftp:delete节点即可解决问题。
  2. 排查重复触发问题:在删除步骤前添加日志,打印待删除路径和当前流程的执行ID,确认同一文件是否被多次执行。如果确认重复触发,调整SFTP入站配置,添加fileAge属性设置合理的最小文件年龄避免未写完的文件被扫描,或者配置幂等过滤器,同一个文件名仅处理一次。
  3. 校验路径拼接逻辑:在删除节点前添加日志,输出拼接完成的完整路径,和SFTP服务端的实际路径比对,确认大小写、特殊字符、分隔符完全匹配。
  4. 增加容错逻辑:如果业务上允许「待删除文件不存在」的场景(该结果本身也符合删除的预期),可以给删除节点套上异常捕获逻辑,捕获SFTP:ILLEGAL_PATH类型的错误后直接忽略即可。

内容的提问来源于stack exchange,提问作者S Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:03