暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
MyBatis版本升级引发的线上告警回顾及原理分析-美团技术团队.pdf
163
15页
1次
2023-02-18
5墨值下载
2023/2/17 10:32
MyBatis版本升级引发的线上告警回顾及原理分析
https://mp.weixin.qq.com/s/sk0Kou9V727tRe5wddmDig
1/15
MyBatis线
399
2020 22
MyBatis线
作做
背景
某天晚上,美团到店事业群某项系统服务正在进 行常规需求的上线。因为在发布时,提inf-bom
版本需要升级,于是我们就将inf-bom版本从1.3.9.6升级至1.4.2.1,如下图1所示:
1 版本升级
不过, 当务上线后,开 始续出了一些更系统互日志 方的报,这属 于统的助流
程,报警如下方代码所示。我们发现都是跟MyBatis相关的报警,说明在进行类型转换的时候,系
统产生了强转错误。
, id:{#######}, response:{{"code":XXX,"data":{"callType":3
nested execption is org.apache.ibatis.type.TypeException: Could not set param
jdbcTyp=null,resultMapId='null',jdbcTypeName='null',expression='null'}.Cause
different Jdbc Type for this parameter or a different configuration property.
2020-06-18 20:01
原创
2023/2/17 10:32
MyBatis版本升级引发的线上告警回顾及原理分析
https://mp.weixin.qq.com/s/sk0Kou9V727tRe5wddmDig
2/15
因为报 警一块码,属 于史功,如果失并不影响主 流。但定位期 间如果繁报
警的话,就会造成一定的干扰。因此,我们马上 采取了回滚操作,inf-bom的版本回滚至历史版
本,直 至警消,然后 再行问的定位和析。下章节 就我们报警原 因定位原因
详细分析的介绍,希望这些思路能够对大家有所启发和帮助。
报警原因定位
在回滚完毕后,我们开始具体分析报警产生的主要原因,于是进行了以下几步的排查。
第一步,查看了报警的Mapper方法,如下代码段所示。 这是接收返回参数,根据主键id,更
具体响应内容和时间的代码,入参有3个,类型分别为longStringLocalDateTime
int updateResponse(@Param("id")long id, @Param("response")String response, @Param(
第二,我查看Mapper法对XML件,下代段所,对parameterType
String,而实际参数的类型包括longString以及LocalDateTime
<update id="updateResponse" parameterType="java.lang.String">
UPDATE invoice_log
SET response = #{response}, update_time = #{updateTime}
WHERE id = #{id}
</update>
第三,我们 查MyBatis线前的版,报警 的容是MyBatisSQL句时发现
不能LocalDateTime转型String,这一段逻辑在上线前是可以正常运行的,并且上线的业 务
辑对这段历史代码无改动。因此,我们猜测是因为inf-bom的升级,从 而 导 致MyBatis的版本发生了
变化,对某些历史功能不再支持了。MyBatis版本上线前后的变化如下表所示:
1 MyBatis版本升级前后对比
第四步,我们通过第三步可以得到,在这次inf-bom的版本升级中,MyBatis的版本直接升了两个大
版本,因此我们可以基本将原因猜测为MyBatis级跨度较大,导致部分历史功能没有兼容支持,
of 15
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜