记录自己的bug

   日期:2020-07-13     浏览:90    评论:0    
核心提示:挂一个今天的bug项目背景:发生问题:过程项目背景:同步区块高度,获取当前交易内容,检查是否有本平台内交易。发生问题:问题1、用户充值迟迟没有到账。问题2、经检查发现,获取区块高度的定时方法(1次/min)突然不执行了。中间存在7分钟的空没执行,后续其他方法正常执行,获取区块高度方法不执行。过程检查日志,发现半夜突然又莫名的后台管理登录接口访问。发现大概率爬虫,暂时不管了。继续检查,发现了报错以为是定时任务挂掉了。好奇为什么定时任务挂了之后就不再执行,然后查csdn。。。发现spr

挂一个今天的bug

    • 项目背景:
    • 发生问题:
    • 过程

项目背景:

同步区块高度,获取当前交易内容,检查是否有本平台内交易。

发生问题:

问题1、用户充值迟迟没有到账。
问题2、经检查发现,获取区块高度的定时方法(1次/min)突然不执行了。中间存在7分钟的空没执行,后续其他方法正常执行,获取区块高度方法不执行。

过程

检查日志,发现半夜突然莫名的后台管理登录接口访问。

发现大概率爬虫,暂时不管了。

继续检查,发现了报错

以为是定时任务挂掉了。好奇为什么定时任务挂了之后就不再执行,然后查csdn。。。

发现springboot的定时任务是单线程的,好吧。按照文档改为多线程。
传送门:https://blog.csdn.net/qq_31868149/article/details/88579082

继续查看代码,发现在报错的位置加了try-catch,那讲道理线程应该不会挂掉。


ps:当时偷懒,就把区块高度写成静态变量,如果程序启动,静态变量为null,区块高度为当前获取的区块高度,然后再去查询发生的交易(也就是说,服务停止的期间,交易就不管了)

因为在获取当前区块高度的时候,如果没拿到区块高度,就返回0。。。

方法执行后。。系统记录的区块高度就从10433272,变成了0。。。

下一次执行的时候,网好了。。。。崩溃之路开始了。。。

找每一个区块的内容。。。。然后判断交易。。。

又因为单线程定时任务。其他定时任务都不跑了。。。傻傻等待。

总共解决。。。。
1、定时任务改成多线程了
2、老老实实把区块高度记在数据库里
3、如果再拿不到高度,还是返回0,但是不写数据库。

完结。。。

第一次发帖,轻喷,谢谢各位大佬。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服