2月29日 ftpClient.listFiles问题
一、2020年2月29日问题描述
- 像往常一样,我们的一个定时任务从服务器A通过FTP方式连接到服务器B和服务器C下载日期为20200229的文件,loginin,cd 都是成功的,但是到执行FTPClient.listFiles()方法时返回的文件列表为null,同时从日志看,报了NPE(NullPointerException空指针异常)。但手动登录到服务器B和C时,发现想下载的文件是存在且有内容的!
- 从服务器B FTP到服务器A,通过FTPClient.listFiles()方法查看文件指定文件,开始都是可以正常获取到文件,但FTP上传覆盖了一次这个文件之后,再通过FTPClient.listFiles()方法获取该文件,就获取不到了。但是,同路径下的另一个文件,仍然可以获取到。
二、问题分析历程
- 与网络部确认,网络策略近一段时间都没有任何变动
- 与所有相关开发人员确认,近期没有上线操作
- 确认文件存在后,手动重复执行下载任务代码,结果仍然失败
- 手动FTP下载文件全部可以成功,于是先手动处理了线上文件,然后再安心去排查问题
- 通过 /usr/sbin/lsof 排查系统句柄占用情况,总句柄数正常(不过发现了其他一些应用占用句柄情况,后面也顺便处理掉了^_^)
- 把有问题的应用复制到其他机器,再次执行任务,还是出现同样的问题
以上正常排查都做完之后,问题仍然存在,于是换了一个思路去思考整个问题,今天是四年一遇的一天,会不会是工具包有BUG呢ÿ