处理投递岗位,前端提示参数转换失败

Spring项目参数转换失败

产品测试项目中投递岗位,提示“参数转换失败”,错误信息前端没有匹配的,后端异常信息记录不全。用户的简历也不知道怎么删,项目中有多种缓存。加上前面几天有紧急需求要处理。星期一早上提的问题,过了四天,才在老板提醒下处理,并与下个周一处理完。

过程

周一早上在测试处理各种问题,产品提了一个不好复现的问题(已经有简历的无法复现),bug中描述的返回是点小程序左上角的箭头。下午又有紧急需求出现,要周四发版。周四有数据分析需求要给结果。实际给到处理问题的时间比较少,并且是效率最低的周五。一开始定位是异常信息返回不全,具体的异常也不是java异常体系的,实际记录的异常指定了关键信息,但是也不全。问题不好复现,因为前后端开发都已经建过简历。后端实际调的远程服务,远程服务没有给删除简历的接口,没有找老板帮忙删数据,然后想办法在那模拟删除简历,最后让同事帮忙验证,已经到下班时间,同事下班。我自己在那模拟数据,增加清理缓存的接口。

在周六休息一天,效率变高后,周日到公司加了一个小时的班,准备结合以往经验,仔细看代码逻辑,从代码入手。发现记录了异常日志,可以搜索,提高了搜索效率。也查了对应异常的资料,发现是Spring中的异常,是由前端传参undefined导致,但是框架没封装好,没记录详细的异常信息。大致理清问题后,下班了。

今天周一提前一个多小时来上班,与前端沟通后,告诉了前端问题和解决方案,前端还是想要先清理简历。找老板帮忙无果,于是找运维帮忙,运维给的数据库不对。在查看RPCenter的项目源码后,自己确定了RPCenter测试环境使用的数据库,并从redis缓存、RPCenter数据、本地数据库中清除数据,配合测试。前端解决后发二维码给我扫,我没发现问题,找同事看,同事没发现问题。于是改了bug状态,让产品验证。

耗时:7个小时+2小时通勤。预计耗时:1小时

问题

  1. 产品提的问题优先级被我设置的比较低,要低于要发布的绩效改版。但是老板实际定的优先级比较高。如果有bug,优先处理bug。
  2. 对Spring 的异常体系结构不了解。
  3. 没有仔细看代码,虽然返回的异常信息不全,但是记录的异常信息稍微全一点。
  4. 缝状的框架有问题,异常处理过于统一,但是不实用。
  5. 全局异常处理在业务模块和框架模块重复封装了。完善异常日志时,发现改的不生效。
  6. 不知道如何删除rpcenter数据库中的简历。已经有官网代码了,但是因为没人教,就没删。后面找运维结合自己找代码就删除成功了。
  7. 周日把电脑带回家,发现在家不能访问公有云数据库,只能等到周一到公司,连公司网。浪费了坐车的两个多小时。
  8. 模拟删除简历一直失败,对前端怎么使用接口、使用哪些接口不了解,浪费了很多时间。

值得肯定的地方

  1. 在找不到问题突破口的时候,还是以认真看代码、直接从具体异常的资料作为入口,加上阅读spring源码,最终定位到问题是控制器方法无法解析参数导致的问题,并且搜索到了对应日志,让前端愿意相信问题在哪
  2. 周五效率低,等周六休息一天后,周日一个小时就定位到了问题。
  3. 周五加班,刚好老板晚上九点多提了生产的几个问题,可以处理

总结

  1. 要了解Spring的异常体系结构和各种异常的发生时机、位置、原因,以及对应解决方案
  2. 要仔细阅读代码,返回的异常信息不等于记录的异常日志
  3. 不要陷入一种解决方案中,比如这次使用的数据模拟
  4. 周五效率低,可以等周六休息后,周日效率高了再处理
  5. 公有云数据库的访问都是从phpAdmin中访问,每次要指定ip和端口
  6. 自己有远程服务的项目源码,就不要嫌麻烦,看下源码,即使语言不熟悉
  7. 多级缓存不方便调试,要想办法添加一键清除缓存

改进措施

  1. 了解Spring异常体系结构
  2. 大致了解rpcenter的项目的功能
  3. 处理bug时,要认真、慢慢看源码,不能为了省几分钟,导致后续浪费几个小时
  4. 涉及到公有云相关的问题,尽量在公司处理。服务对ip限制比较严
  5. 难的问题,就不要留在周五处理。前面已经连续加了四天班
  6. 可以周三适当早点下班、或者去运动,避免周五效率低

实施计划

  1. 周三尽量早点下班,提高周四、周五的工作效率
  2. 熟悉Spring的异常体系结构,尽量可视化,列表格
  3. 了解rpcenter的数据库设计、基本接口,即使不负责该项目
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容