【异常的诞生】
周五下午接到反馈,说客户向我们系统发起API签约失败。立即查优付trans-business日志,在对签约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)
【快速响应:】
- 前一天的周四是例行上线日,由此可以确认这个问题是上线导致的。通过异常信息: 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, 文件不存在?在确认master分支代码的配置文件正常后,赶紧找世伟确认pctrans-core这个jar里是不是缺少了这个文件。经查,并未少。
- 初步分析是因为fdfs_client.conf不是properties文件导致的,就像我们读.cer证书一样,从.jar里是读不到的。就是说,这种文件应该在/www/epaysch/tomcat-trans-8280/webapps/pctrans-business/WEB-INF/classes/下面。
- 不过,最重要的是先解决问题。经过与在洲、明辉初步沟通,可以对昨天夜间发版的trans进行回滚。于是,找世伟,先回滚代码,保证系统可以正常使用。(2021年2月9日确认一共影响15笔带照片的签约)
【前一晚的发版内容】
我们的优付项目工程里有这么3个module,其中,trans-business和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里。
原文转载:http://www.shaoqun.com/a/543579.html
网易考拉海购大促:https://www.ikjzd.com/w/1052
ideal:https://www.ikjzd.com/w/2286
【异常的诞生】周五下午接到反馈,说客户向我们系统发起API签约失败。立即查优付trans-business日志,在对签约log进行链路追踪时,发现如下异常。在往文件服务器保存用户证照图片时,fastdfs出现异常。2021-02-0816:05:24.483[ERROR][clientBusiness_common_do_16127804955370E234][com.yft.util.FastD
DMM:DMM
法瑞儿:法瑞儿
亚马逊大洗牌!内部渠道被连根拔起:亚马逊大洗牌!内部渠道被连根拔起
震惊外媒!亚马逊卖家雇"水军"虚假评价,每条价格15欧元:震惊外媒!亚马逊卖家雇"水军"虚假评价,每条价格15欧元
口述:老婆的哥们比我还了解她的生理期:口述:老婆的哥们比我还了解她的生理期
没有评论:
发表评论