记录一次线上重大bug !

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

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

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

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


本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 7

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

2年前 评论

这个应该想到的吧

2年前 评论

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

2年前 评论
Junwind

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

2年前 评论
李铭昕

什么游戏

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!