首页 > 编程语言 > 详细

item "tracker_server" in file:/***/WEB-INF/lib/***.jar!/fdfs_client.conf not found

时间:2021-02-10 13:03:21      阅读:50      评论:0      收藏:0      [点我收藏+]

【异常的诞生】

周五下午接到反馈,说客户向我们系统发起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)

 

【快速响应:】

  1. 前一天的周四是例行上线日,由此可以确认这个问题是上线导致的。通过异常信息: 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里是不是缺少了这个文件。经查,并未少。
  2. 初步分析是因为fdfs_client.conf不是properties文件导致的,就像我们读.cer证书一样,从.jar里是读不到的。就是说,这种文件应该在/www/epaysch/tomcat-trans-8280/webapps/pctrans-business/WEB-INF/classes/下面。
  3. 不过,最重要的是先解决问题。经过与在洲、明辉初步沟通,可以对昨天夜间发版的trans进行回滚。于是,找世伟,先回滚代码,保证系统可以正常使用。(2021年2月9日确认一共影响15笔带照片的签约)

 

【前一晚的发版内容】

我们的优付项目工程里有这么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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!