【异常的诞生】
周五下午接到反馈,说客户向我们系统发起API签约失败。立即查优付trans日志,在对签约log进行链路追踪时,发现如下异常。在往文件服务器保存用户照片时,fastdfs出现异常。
2021-02-08 16:05:24.483 [ERROR] [clientBusiness_common_do_16127804955370E234] [com.yft.util.FastDFSUtils:86] 读取fdfs配置文件失败! org.csource.common.MyException: item "tracker_server" in file:/www/epaysch/tomcat-trans-8280/webapps/pctrans-business/WEB-INF/lib/pctrans-core-0.0.1-SNAPSHOT.jar!/fdfs_client.conf not found at org.csource.fastdfs.ClientGlobal.init(ClientGlobal.java:102) at com.yft.util.FastDFSUtils.upload(FastDFSUtils.java:84) at com.cn.yft.pay.service.impl.SignContractServiceImpl.doBusiness(SignContractServiceImpl.java:163) at com.cn.yft.merchant.controller.ClientBusinessController.doBusiness(ClientBusinessController.java:227)
【快速响应:】
【前一晚的发版内容】
我们的优付项目工程里有这么3个module,其中,trans和provider是主应用,二者都依赖trans-core。因为要区分dev/test/prod环境,二者都包含了许多环境配置properties文件,比如jdbc.properties、fastDFS.properties、fdfs_client.conf、redis.properties,还有其他的与系统相关的properties文件,如bank_config.properties、levy.properties、business_config.properties等等。
由于涉及到配置改动时,可能要同时改两个项目,而不知情的开发成员会出现漏改。所以这次需求迭代开发过程中,我们决定将共同的配置文件统一封装到trans-core里。
这次发版比较顺利,不过还是出现了这个败笔。人有千虑,难免有一失呀!
fastdfs出现异常的代码(FastDFSUtils#upload),本案异常在加粗行抛出。
/** * 上传图片返回9 * * @param pic 图片二进制 * @param name 名字 * @param size 大小 * @return 图片的路径(不包括ip和端口) * @throws Exception */ //上传图片 返回图片路径 public static String upload(byte[] pic, String name, Long size) throws Exception { //全局设置IP 端口 参数 fdfs_client.conf ClassPathResource resource = new ClassPathResource("fdfs_client.conf"); //设置成功 try { ClientGlobal.init(resource.getClassLoader().getResource("fdfs_client.conf").getPath()); } catch (Exception e) { logger.error("读取fdfs配置文件失败!", e); } //ip 15683 TrackerClient trackerClient = new TrackerClient(); //创建连接 TrackerServer trackerServer = null; try { trackerServer = trackerClient.getConnection(); } catch (IOException e) { logger.error("创建tracker连接时失败!", e); } 。。。 }
【解决方案】
接下来是按初步思路来修改程序,在测试环境测试,证实原先的分析是ok的。解决方案就是把 fdfs_client.conf 原路移植回trans-business和trans-provider里。
item "tracker_server" in file:/***/WEB-INF/lib/***.jar!/fdfs_client.conf not found
原文:https://www.cnblogs.com/buguge/p/14395270.html