首先给看这个的看客提前说明一下,我这里发生的问题其实是一个很小的非技术原因导致的,写这篇博客是为了将我找bug的经历放出来给各位参考,以后发现了类似问题,可以按照这样的找bug方式去找自己的问题。
问题的发现是写了一个接口给前端使用,前端说报异常。所以去后台看了一下项目日志,消费者报没有找到对应的方法(方法就是我新提供的方法)。
首先看到这个异常想到的是代码是不是真的推送到测试环境了(前端在测试环境调试),所以去gitlab仓库看了一下代码,已经存在了,证明代码推送是没有问题。
然后再推测是jenkins进行打包的时候是不是拉取的正确的git代码,所以去jenkins中自己的项目部署日志查一下git拉取的id,发现和gitlab中的最新提交id一致,那么证明也是没问题的。
然后继续考虑链路上的问题,考虑到方法是否注册到dubbo的注册中心nacos(我们用的注册中心和配置中心是nacos)上,所以去检查nacos上的注册中心,检查发现方法确实没有注册上。没有注册上就看测试环境项目的启动日志看是不是注册的时候发生问题,查看项目的启动日志没有异常报错,但是对应的方法还是没有注册上。
这个时候我就比较疑惑了,整个链路中所有可能发生异常的点检查了都没有问题,那是哪里出了问题呢?(一般这种时候就需要考虑最不可能出问题的地方了。)
此时通过倒排的方式去找问题,将测试环境中的jar包(我们使用的是jar包部署)下载到本地然后通过工具检查源码是否有对应的方法。果然发现源码中方法不存在。
此时发现了问题那就比较好解决了,源码不存在那么就是这个jar包有问题,这个jar是通过我们自己的脚本启动的,所以开始检查我们的脚本然后发现脚本中的文件夹地址确实存在问题。
然后修正,解决问题。
此处说明一下,为什么一开始就没有检查脚本,因为这个脚本是很久之前就已经写好了一直在使用的脚本,但是今天有个同事突然去改动了他并且没有在群里告知别人(此种属于坑爹行为,大家要避免,如果改动了一些项目类的配置,其他同事会受影响的一定要告知其他人,防止类似事件)。