ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记一次特别bug

2021-07-13 10:34:27  阅读:170  来源: 互联网

标签:tmp 特别 一次 服务 错误 文件夹 报错 日志 bug


Bug描述

本机启动服务时不报错,服务间调用该方法不报错,且线上部署后启动和使用该方法均不报错。线上运行大半个月,突然看到错误日志出现错误。排查无果,遂重启服务,日志不出现报错。又运行大半个月后日志开始出现报错。报错信息如下:

运行时异常:Error while extracting response for type [class java.lang.Long] and content type [application/json]; 
nested exception is org.springframework.http.converter.HttpMessageNotReadableException: Invalid JSON input: 
Cannot deserialize instance of `java.lang.Long` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: 
Cannot deserialize instance of `java.lang.Long` out of START_OBJECT token at [Source: (PushbackInputStream); line: 1, column: 1]

排查错误定位:

错误的起因是由于A服务调用DFS服务(文件上传服务)的上传服务时,上传服务调用失败直接运行期异常,导致返回值为空则A服务转义空位Long类型变量失败。问题的关键在于上传服务

上传服务排错

首先查看了DFS服务的日志

发现/tmp/undertow.xxx目录下不存在文件,查看服务器上/tmp目录下并无该目录,排查代码中是否含有该目录,结果并无,一时捉瞎,遂重启dfs服务,发现/tmp目录下出现一个新的文件夹,与错误日志显示文件夹类似的文件夹名称。就这样相安无事过了一段时间。

错误依旧

线上又运营了半个月并无错误日志出现,以为万事大吉。接下来又开始报警,查看错误日志依旧是之前的错误。

我自我感觉肯定是因为那个文件夹的原因,但是我并未主动创建这个文件,是程序启动后自动创建的,那为什么开始并未报错,结果运营一段时间后就被删掉了呢?

解决错误

我开始往临时文件夹想,因为/tmp是centos系统专门用来存放临时文件夹的目录嘛,那我的这个服务也是跟临时文件有关的,查阅资料,发现centos系统定时会清理tmp目录下的不常用文件夹,我福临心至,猜想很大概率是因为我服务启动后这个临时文件夹长时间未使用,被系统自动清除了,遂准备更换临时文件存放地址,在centos系统里新建一个临时文件目录,取名/data/tmp/,并在dfs服务的application.yml中添加了临时文件存放目录的配置。

 servlet:
    multipart:
	location: /data/tmp

重启服务,到现在已经等待快1个月了,服务并未报类似错误。自此排错成功。

标签:tmp,特别,一次,服务,错误,文件夹,报错,日志,bug
来源: https://www.cnblogs.com/RobetLxx/p/15005328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有