2023年1月4日,难熬的日子。因为这是为期七天报名活动时间的倒数第二天,各位大学生都在赶deadline导致访问量非常大,很多奇葩的问题都会在这个时候出现。
比如我今天碰到的这个问题,如果不是崔哥有着丰富的经验,不仅作为项目负责人同时还是一线开发人员对于数据处理流程和业务流程有着非常全面的掌握,换其他人来都不好解决这个问题。
事情的起因是这样的
学院管理人员跟我反馈有一个队伍报名了但是看不到这个队伍的报名信息,导致无法审核,临近报名结尾可能会有比较不好的影响。
解决问题轻松加愉快
经查验数据库,发现他报名信息里缺少了学院字段,虽然学校管理端能够看到这个报名信息,但是学院管理端的审核目标都是根据学院字段进行分配的,这就导致在学院审核端获取数据时遗漏了这个队伍。
插一句,这里学院字段的缺少很可能是因为在版本更迭是因为为了通过审核要避免一些东西,就暂时通过配置删除了这个字段。
这个队伍可能很巧在这段时间报的名,导致报名信息中学院属性的缺失。
问题还是比较好解决,我在后台数据库给他把学院加上去就没问题了。
出现问题原因的排查
我记得我在设计时为了避免这种情况做过报名信息完整度的判定,如果信息不完整是不能报名和组队的。而我自己又无法复现出来这个问题,所以我想和这位bug受害者了解一下具体情况。
经过沟通,我联系上了当事人。并说出了我的来意和我的困惑。
因为我通过我的手机登录他的账号是无法复现出这个问题的。为了减少以后的程序维护工作,我必须弄明白这个到底是什么原因导致的。
一开始我先让他在他的手机上重新报名一次,数据库中报名信息中还是缺少学院的字段。(这是个好事,这意味着BUG基本上跑不了了)
但是我在后台数据库看到他最新用户信息中的学院字段是完整的,也就是说有有一个逻辑让他的学院信息没有写入。
经过查验源码,我发现在报名时,我为了减少读数据库的操作,在报名信息写入数据库的操作中,学院等一些信息是通过用户的缓存获取的,可能是在这个环节上出了问题。
其实我觉得也这个时候只有缓存问题能解释了。在同一个微信小程序上,两台手机出现不一样的情况,基本就是缓存问题。
我让这位受害人通过退出登录的方式刷新了缓存,然后缓存中的报名信息就完整了。
后面因为新报名的项目,还要经过院团委审核,我就直接用我狗管理的权限给他通过了。
皆大欢喜。
把这些写出来的原因
因为我在解决这个问题的过程中不是那么顺畅,毕竟我没能复现出来bug。但是我感觉我解决问题的思路非常清晰,同时定位问题超级高效。
这完全得益于这个代码都是我一手编写的,相比于我现在实习的项目,我每次接手一个项目都要去一点一点磨代码,做笔记,去理解前辈们的思路。这个过程让我非常痛快。
所以,这么顺畅的解决问题经历我就想写下来吹吹牛逼。
还有就是,有问题先重启,如果还有问题再刷一遍缓存,这一套下来有问题再去定位代码也不迟。