工作感想随笔

公司的一个项目,没有测试环境,所以没法测试,只能直接放到正式环境。。。齐问我有没有把握,我说没有。。。我怎敢保证。事实也证明,确实没把握。第一次推上线,是星期一上午,没注意看readme文件,没把SocketClient类里使用的端口号改过来,结果导致所有请求都没得到响应,很快就收到客服那边反馈的用户投诉。星期二晚上十点第二次推上线,用设备测试了一下基本操作,是可以的,可不到两个小时,就又收到了投诉,只好把旧版本放回去。

回过头来看看日志,也没找出问题所在。只能看到些莫名其妙的错误。很郁闷。这使我不得不去怀疑,正在跑的程序的代码和我从gitlab上拷的是一样的代码吗?

我做的改动就是修改之前的日志管理,即logger语句的写法。除此之外,我还使用了ThreadLocal对象,我封装了一个静态的ThreadLocal对象,写了set方法和get方法和release方法:

public class ThreadLocalUtils {
    private static ThreadLocal<String> threadLocal = new ThreadLocal<String>();
    public static void setToThreadLocal(String phone){
        threadLocal.set(phone);
    }
    public static String getFromThreadLocal(){
        return threadLocal.get();
    }
    public static void releaseInThreadLocal(){
        threadLocal.remove();
    }
}

然后,在service层方法执行了根据id去redis缓存查找相应信息后,我将电话号码通过set方法存到ThreadLocal对象中,然后在controller层当抛出异常时,即在catch处通过get方法获取电话号码,最后在finally通过release方法释放资源。使用ThreadLocal对象前也是有了解过的,应该是没问题的吧?我在我的毕设作品上模拟了这个操作,是可以的。ThreadLocal对象以线程号为key,这样是不会相互影响到才对啊,而且我也有释放资源啊。

日志中,奇怪的事情来了,当抛出BusinessException异常时,第一个logger语句执行了,而后面的logger语句却没执行:

 catch (BusinessException e) {
    OutputObject outputObject = new OutputObject();
    outputObject.error(e);
    logger.error("捕获BusinessException:" + outputObject);

    //钉钉机器人通知部分
    String tipMessage = "用户uuid为"+ input.getUseruuid()
            + ",卡号" + input.getCardNo()
            + ",号码" + ThreadLocalUtils.getFromThreadLocal()
            + ",在调用【/xxxx/xxxx】(订单申请)时,结果提示:" + outputObject.getStatusCode()
            + "错误,错误信息为:" + outputObject.getMessage() ;

    SendMessageUtils.sendTextMessage(tipMessage);
    logger.warn("<<<" + tipMessage);

    return outputObject;
}

第一个logger语句执行了,第二个logger语句没执行!!而且我调用钉钉通知的接口方法也没有生效。我只能得出这样的结论,这个get操作抛出了异常:

ThreadLocalUtils.getFromThreadLocal()

也只能这样解释了。不然后面的logger语句怎么会不执行?因为我的sendTextMessage方法是使用了try catch捕获的,所以sendTextMessage方法肯定不是罪魁祸首。

可是我在我的毕设作品上也试着用这个ThreadLocal类,也是类似的操作,在service层里set,在controller层的catch里get,然后在finally里release,却是能正常执行的,钉钉上也收到了消息!!!这真的让我很不解。

真的想不懂,想不懂。到底是哪个环节出了问题。很认真很认真的和初始版本比较了,现在就真的只是改了日志的输出,没有改到其他东西。明天再推上线,又出问题,我就真的真的真的真的不知道该怎么办了。抓狂。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值