记录一次线上重大bug !

项目是rpg游戏类的,基于workerman;

有一个需求是这样的,需要改造一个功能的旧数据,变为一个新的玩法模式,我在每个人登录时做了数据调整; 

上线后,发现pk时,战斗数据有很大差异
找了很久的原因后,发现是打其它未登录的人时,因为别人未登录,数据没有调整过来,导致其原先的属性加成还在, 登录的用户被清理过,导致双方加成不一样;

总结:
    改老数据时,一定要把用户所有可能的情况考虑清楚; 什么情况下触发修改,什么情况下没有被触发,没有被触发会产生什么问题;
    还有特别要注意,并发的问题; 


本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

这个锅 产品40%、程序员30%、测试30%

3年前 评论

这个应该想到的吧

3年前 评论

登陆时是一个状态,! 登陆时也是一个状态

3年前 评论
Junwind

正常打怪,打boss都是正常的,核心原因是其它离线的真实玩家的数据,没用经过登录时触发调整旧数据; 导致pk时对面如果是离线的玩家,此时获取的离线玩家的数据是不正常的状态; 这个主要怪我疏忽了这一点, 刚好赶上测试请假,改老数据,重构功能时一定要慎之又慎!!!

3年前 评论
李铭昕

什么游戏

3年前 评论
lun1bz 3年前
李铭昕 (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
142
粉丝
17
喜欢
107
收藏
62
排名:258
访问:3.7 万
私信
所有博文
社区赞助商