记一次bug修复过程
我的建议,究竟有谁会看,以我的位置,到底能推动到哪一层
可行性,可能性
问题:
用户的数据丢失了。以为是修改操作 有bug,但查看了后端接口和前端校验,都没有发现问题。
但是input数据没有日志【日志级别是debug】,不能自证清白。
并且一些没有办法轻易证明的猜测也有:是不是并发问题,一个insert操作操作刚完成,另一个请求上来了,把这个新insert的数据删除了。查了api网关,真找到有两个触发时间比较接近的两个请求 。。。
纠结中:这个简单的逻辑,还出问题,觉得很不爽,也不服气。
tips:这种情况下,可以使用这种话术----”我先看一下“ 如果直接说”这么接口这么简单,怎么可能有问题“ ---------------提出bug的人,可能觉得自己提出的判断或事实,被否定了。
解决办法:
是修改接口被误用,在别的场景中被调用了
背景: 需求描述
有一个 一个页面添加多个项的操作,
并且支持对多个项 进行 修改, 删除几个原有的,再新增几个
方案1:对已有id的更新,对没有id的进行insert ,还有对 删除项 进行删除-----这个貌似是最好的。略有复杂
删除,如果使用逻辑删除,则在 新增的记录 时,要不要和已有删除项的数据进行对比呢,如果已存在,则更新老的标识位,让其可见即可------ 问题:怎么判定是一条相同的记录呢。特别是字段比较多的场景
方案1:先删再增
是逻辑删,还是物理删除。
可以逻辑删,但要定时清表。对于操作频繁的表,数据量会越来越多
问题:
一个接口有变更,但接口没有按 单一职责 进行设计,调用散落在了不同的业务点。
思考--对一个表不同字段的修改,可能会用于不同的场景。 看到有不少地方是到处使用这个接口,这就造成 参数校验会散落在各个场景
一个对表的修改操作
记一次bug修复过程的更多相关文章
- 记一次bug查找经历
系统采用cell插件显示汇总数据,然后发现个公司数据显示不出来,接到这个任务开始查找bug. 通过需求了解并不知道其他公司什么情况,因为就这个公司有了反馈: 本来以为很容易找到点的,毕竟数据显示不出来 ...
- 记一个逻辑bug
1 从数据库中找出一个学生能选的毕业设计(毕设的select or not 字段表示本题目是否已经被选 此时就按照其值为n来查询) 2 用户选择某个毕设后,先更新毕设表(select ...
- 记Weblogic部署BUG(websocket)
将含有websocket的SSM项目部署在Weblogic上面,遇到websocket报错如下 java.lang.ClassCastException: org.springframework.se ...
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
写在前面的话 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> <Java开源博客My-Blog之docker容器组件化修改> ...
- 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)
[问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(4) - 新增BugTalk功能
测试人员提出一个Bug,如果开发人员对Bug有疑义,会直接面对面讨论或者通过QQ等线上聊天工具讨论,但过后再去找讨论记录会很麻烦.因此BugDone提出一个全新的概念:将问题的讨论留在问题内.BugD ...
- 记一款bug管理系统(bugdone.cn)的开发过程(3) - 永久免费化
BugDone永久免费了! BugDone(bug管理工具)已经发布有一阵子了,自发布以来注册用户量.项目创建量稳步提升,并且得到了很多用户的好评. 在开发BugDone工具之前,我们团队也曾为找不到 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(2) -如何做好登录界面
一. 做了一个大胆的决定,官网首页便是登录界面 BugDone,Bug管理工具的定位就是一款非常易用的工具,所以我们没有像其它平台那样进官网首页都是一些功能和业务的介绍. 我们觉得方便用户快速进入工作 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(1) -- 为什么要开发一款bug开发系统
对于从事软件研发行业的同学来说bug管理系统肯定不陌生.本人03年左右开始正式成为一名码农,工作期间接触过若干bug管理系统,如JIRA等,不过都是自行部署在公司内网的. 几年过去了,现在已经是互联网 ...
随机推荐
- Web开发工具箱
1.打印1 Web打印组件jatoolsPrinter 2.打印2Lodop 3.web前端利器 Web Essentials
- django LookUp
Custom Lookups 一个简单LookUp例子 Author.objects.filter(name__ne='Jack') # Translate SQL "author" ...
- nowcoder(牛客网)提高组模拟赛第一场 解题报告
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...
- OCP 12c最新考试题库及答案(071-2)
2019-02-12 16:23:54 2.(4-7) choose the best answer:You need to display the first names of all cust ...
- macdown快速上手
1.断句 在结尾处输入两个空格并使用回车. 2.标题分级 使用#来进行分级,#越多级数越低 3.链接 可以使用<>里面直接加上地址 或者使用[}里面加上链接名字然后后面接上()里面就是地址 ...
- Review notes
- 《Fixed Income Portfolio Analytics》阅读笔记——第零部分
<Fixed Income Portfolio Analytics>第零部分的思维导图. <Fixed Income Portfolio Analytics>阅读笔记--第零部 ...
- mysqldump 导出提示Couldn't execute SELECT COLUMN_NAME...
mysqldump命令: 导出数据库:mysqldump -h ip -u root -p dbname > db.sql; 导出数据库中的某个表:mysqldump -h ip -u root ...
- Codeforces - 914C 数位DP
题意有点难以描述,简略的就是给定一个二进制\(n\),每一步操作能使\(n\)的位为1的数的和转化为一个十进制,然后转化为该数的二进制再进行相同的操作 查询\([0,n]\)中操作数恰好为\(k\)的 ...
- nodejs的process.on('message')转promise
// main.js const cp = require('child_process'); const child = cp.fork('./child.js'); const callbackP ...