程序犯了好些小错误,出事了,现在坐立不安

2015-02-13 20:59:36 +08:00
 kankana

有个feature是要求用户suspended 30天后,将此用户的所有数据给删掉. 30天内是可以恢复的。

我直接队列,将该任务延迟到一个月后。

现在才发现用户提前被删除了。

原来,延迟参数,我传递的是30*24*60, 实际上,时间单位是秒。。。

现在用户要恢复,结果数据全没了。。。

很对不起老板。。。搞砸了。。。


lessons learned:

1, 加强测试。

2, 定时备份数据库。

7051 次点击
所在节点    程序员
55 条回复
simo
2015-02-14 09:08:10 +08:00
这是每个老程序员的必经之路吧,我删掉过所有客户一天的库存,然后一个一个的找客户联系,手动重新上传,还算有的补救。 比我早一年的一个程序员更厉害,把整站数据库删掉过,备份是一个月之前的,这件事儿教训他每天定时备份。我俩现在所有的程序删除都是假删,标记一下。
这种情况楼上的各位说的很清楚了,基本的意识无非是:定时备份 + 假删
akstrom
2015-02-14 09:26:27 +08:00
删除数据是一个最不明智的操作..............标记或移动
lijingyu68
2015-02-14 10:11:55 +08:00
今天又学了一招
dempire
2015-02-14 10:34:09 +08:00
在老板面前真删除是幼稚的,以老板反复无常的心理,必须留下数据随时等待恢复
kankana
2015-02-14 10:37:18 +08:00
@juneszh

这两个常量当然记得. 小时和一天. 当时写这行代码时, 我记得我特地思考了下,"这个延迟参数是分钟为单位的".............

@sharpnk

现在,我是直接传了个datetime, Carbon::now()->addMonth(1); 这样应该会好一点了吧?

一万多行代码的项目,就我一个人...

@msg7086

你们ror 测试这么方便啊!!!! 真心羡慕
qxli
2015-02-14 10:45:06 +08:00
加油,我以前也遇到过,不过没这么严重,现在写任何一句代码或任何比较危险的操作都要反复测试验证。
msg7086
2015-02-14 11:58:44 +08:00
@kankana RoR里测试驱动开发是常态啊,赶紧来把玩Ruby吧 (安利脸
coderlu
2015-02-14 13:46:10 +08:00
标记删除
kaneg
2015-02-14 18:54:32 +08:00
http://blog.jobbole.com/35922/
看看这位老兄的“杰作”你就知道自己的过失小巫见大巫了
angelface
2015-02-14 21:15:50 +08:00
技术上不说了,前面说的不少了,从你的这份责任心上看应该能成为一个不错的程序员,加油,骚年!
RaymondYip
2015-02-14 23:45:25 +08:00
标记已删除正解
kankana
2015-02-15 00:14:40 +08:00
@RaymondYip

如果你仔细看, 就能发现我已经用了soft delete.

这里跟soft delete没啥大关系, 主要是一些我们的数据比较敏感, 涉及到一些外部平台.

用户还在的话, 明文给他们, 没关系. 退出的话, 我们得删除这些东西, 并联系外部平台做相应的反应.

所以, 还真跟soft delete没啥打关系. 当然,也怪我没提供足够信息.

其实呢, 发个帖子, 主要还是缓解下不安的情绪. 没想到还能学到一些实际运营的经验.

老板也没说啥, 他也知道我是个有责任心的人, 会吸取教训的.
9999999999999999
2015-02-15 01:07:23 +08:00
我总是会建一个deleted 的库来备份
caoyue
2015-02-15 09:45:20 +08:00
涉及到物理删除的,还是传时间且没有在参数写明时间单位的,要是我估计得测试加检查好多遍才能安心
有些语言的文档注释和智能提示也能避免一些问题

这种错误早犯也好,我就是犯过一次就老实了 :doge:
jiejieup
2015-02-16 03:14:13 +08:00
功能没测过你也敢提交?

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

https://www.v2ex.com/t/170815

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

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

© 2021 V2EX