同事 A 写了个方法,同事 B 调用了 A 的方法 导致线上直接宕机 这个锅该谁背。。

2021-01-11 10:28:06 +08:00
 yasumoto
公司服务器连续几次宕机,导致有很多业务数据没进来,我们投放是花了钱的 后面找问题发现

是同事 A 写了个 sql 在 mybatis 里面用的<where><if xxx != null> xxx=xxx<if>....</where>类似这样的

同事 B 调用了这个方法,但是他的业务有的时候值没有 导致查询全表 1000 万的数据 机器直接卡死了

在阿里云显示慢 sql 执行了 500 多秒 - -

今天业务找过来说让员工负责一部分损失 ,问问大家 这个损失应该谁背呢
32649 次点击
所在节点    程序员
273 条回复
gamexg
2021-01-11 14:48:31 +08:00
看起来 a 没什么责任。
作为非业务的底层库实现,列表查询一般都是这样实现的,某个条件不提供,那么就忽略这个条件。
或者说,如果认为 a 有责任,那么 a 怎么做才不担责?作为底层库,列表查询某个条件为空时直接报错?这比目前的实现还糟糕。

b 负有责任,作为业务实现,需要评估业务实现是否有性能问题。而且作为业务方,也负责参数检查责任。

测试也是有责任,当前线上数据体量下测试,空参数测试是很正常的要求,这个 bug 比多线程下的 bug 好测试的多。

领导承担权利的同时也承担责任,领导的责任也是跑不了的,更别说领导把测试调走了。

不过损失方面,法律规定员工最多承担 20%工资的责任。
play78
2021-01-11 14:56:09 +08:00
这种慢查询,影响还比较小。
建议楼主看看,delete 的时候,参数有没有过滤好。
不然整表删除,那就不是责任问题了,删库要跑路了。
rabbbit
2021-01-11 15:03:50 +08:00
通过如下楼主发的帖子能大致猜到这是哪家公司(假设楼主在 2019 年没有跳槽的话),大家绕着走吧.
https://tanronggui.xyz/t/546491?p=1
https://tanronggui.xyz/t/633045
https://tanronggui.xyz/t/730952
yzbythesea
2021-01-11 15:04:00 +08:00
楼主是工贼还是蠢?怎么总结来总结去,还在测试,A,B 里面绕?这么奇怪的问责,不先想想今年跑路?
mandymak
2021-01-11 15:05:36 +08:00
@yasumoto 锅应该是同事 B 背,同事 A 写了,但是否调用的决定权是在同事 B 。我吃饭呛着难道我要去责怪种稻的还是做饭的?
seesky
2021-01-11 15:07:35 +08:00
看来以后没个几百万还是不要出来工作了, 分分钟钟要承担损失.
lesterchen
2021-01-11 15:08:56 +08:00
都说测试主责,我都不知道不怎么想的。现在公司测:开一般在 1:4-5 左右,如果按你们这样算,测:开要 4-5:1,还差不多
natashahollyz
2021-01-11 15:21:15 +08:00
A 做了把刀,B 拿去干了坏事,谁的错?
allenhu
2021-01-11 15:24:18 +08:00
A 写的接口,健壮性不够,就算这次 B 没调,也有可能下次被 C 调了; A 的行为导致系统整体熵增加了, 肯定是 A 的锅
ychost
2021-01-11 15:25:13 +08:00
老板背
efaun
2021-01-11 15:27:33 +08:00
@rodrick #101 讲道理这应该算压测
cccssss
2021-01-11 15:40:53 +08:00
DBA 全责,没有自动杀掉慢 sql
darknoll
2021-01-11 15:51:43 +08:00
毫无疑问是 B 的问题,全锅
coldear
2021-01-11 15:54:22 +08:00
找锅这种想法不利于公司发展,我在美国亚麻经历过类似的事情,
整个事件大家的精力和讨论都集中在两点:
1. 怎样减小损失
2. 怎样不让类似的事情再发生
各个相关部门都参与,包括 api 提供者,调用者,QA 等等,每一方都提出和执行一系列具体措施( action item )
JKeita
2021-01-11 15:56:53 +08:00
A 肯定没责任,他这代码本来就合逻辑,就跟卖刀的,买刀的去杀人,难道还怪卖刀的?
thtznet
2021-01-11 16:08:26 +08:00
某化工厂因为没有落实生产安全措施,在生产过程中发生了重大安全事故,导致国家重大财务损失和人员伤亡,影响极其恶劣。你觉得作从国家层面的考虑,第一责任人是谁?废话,肯定是老板啊。你看从法律层面都能明白的事,扯到写代码就不明白了?
duanxianze
2021-01-11 16:08:46 +08:00
老板自己背
ImShiYue
2021-01-11 16:08:51 +08:00
首先,A 的责任在于没有索引的字段没有添加<if test xxx==null or xxx==''>避免全表去查,B 的责任在于没有值的时候没去处理。但是更大的责任在于测试,没索引的全表查询没有测出来。
frank1357
2021-01-11 16:09:55 +08:00
那些说测试背锅的,我觉得你们说的好, 以后也不用叫测试了, 直接叫背锅侠得了;竟然直接导致 BUG 的开发人没责任
mknightoy
2021-01-11 16:10:05 +08:00
A 是提供方,如果没有做好相关教程则 A 主责、B 次责
B 在 A 提供了教程的情况下犯错负所有责任
领导管人不管事所以不负责 [doge]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/743718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX