记录最近线上的一些小bug

4 篇文章 0 订阅

最近出了好几次线上问题,还是太不细心了,后端还是需要严格的测试和验证,否则稍有遗漏就可能出严重的线上问题,记录下最近出现的问题,也希望以后问题能越来越少。

1、Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7####### The error may involve defaultParameterMap####### The error occurred while setting parameters####### SQL: insert into

这里是因为用了批量插入,mybatis中循环foreach循环list进行插入,但是忘记对list进行非空判断,导致list为空时插库失败。

空指针是很常见的错误,很低级也很不应该,所以以后应该尽量最好非空判断

String 类型的非空判断:StringUtils.isEmpty(str)

List类型的非空判断CollectionUtils.isEmpty()

2、HTTP Status 500 – Internal Server Error

报500是因为程序异常直接抛出了,要具体看下后端具体报错,我这里是因为在handleException,统一处理异常时犯了个低级错误

if (e instanceof ErrorCodeException) {
            return new RetResult(((ErrorCodeException) e).errorCode, e.getMessage());
        }
        if (e instanceof IllegalParamException) {
            return new RetResult(((ErrorCodeException) e).errorCode, e.getMessage());
        }

ErrorCodeException是自定义的异常,IllegalParamException是另外一个包里的,我在修改时直接粘贴,没注意到结果导致类型转换异常,也是很低级的错误,写代码时尽量还是应该手打,复制粘贴很容易出错。

3、handleMethodArgumentNotValidException [Field error in object 'entity' on field 'abc': rejected value [null]

valid的非空校验,但是这里奇怪的是字段是传了的没问题,因为这个更新操作有一堆字段,后来经过case对比,发现是其中一个字段本来应该传string,前端传了[],结果导致后面几个字段校验都出了问题,这种部分参数错误很难发现,因为都没办法debug,只能多细心一些。

这个问题的具体原因是这个字段在前端展示是数组,传给后端是string,所以会做一个转换操作,但是前端判断只有在某几个产品的时候才会去做这个操作,这次新增了一个产品,前端这里加漏掉了,导致了这个问题的产生。在线下测试的时候就发现了这个问题,不过以为是数据问题,再加上报错很有诱导性。以后还是应该更细心一些,不管多小的问题都要找到原因,不然等上线了可能就是大问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运维工程师在线上bug应急处理中扮演着至关重要的角色。在线上系统出现bug时,运维工程师需要迅速反应,以最快的速度解决问题,确保系统能够正常运行。 首先,运维工程师需要仔细分析bug的出现原因。他们会通过查看系统的日志记录、监控数据、错误报告等途径,定位问题的具体位置。通过分析和理解问题,他们能够更快地找到解决方法,并防止类似的问题再次发生。 其次,运维工程师会与开发团队密切合作,确保及时修复bug。他们会与开发人员沟通,了解问题的背景和相关的代码。运维工程师可以提供相关的信息和日志给开发人员,以帮助他们更快地定位和修复问题。通过协作,问题可以更快地得到解决,系统能够尽快恢复正常。 另外,在处理bug的过程中,运维工程师需要制定一个良好的紧急响应计划。这包括识别和区分不同严重程度的bug,并根据严重程度的不同制定相应的解决方案。对于严重影响系统正常运行的bug,运维工程师会立即采取措施解决问题;而对于一些较小的bug,他们可以通过临时修复或暂时性的解决方案来减轻影响,然后再进行深入的分析和修复。 最后,在解决bug后,运维工程师会进行事后分析和总结,以避免类似问题再次发生。通过回顾和总结,运维工程师可以找到导致bug的根本原因,并提出改善措施,从而提升系统的稳定性和可靠性。 综上所述,运维工程师在线上bug应急处理中起着关键作用。他们需要快速反应、仔细分析、与开发团队协作、制定紧急响应计划,并进行事后总结。他们的工作对于保障系统稳定运行至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值