1. 背景
点餐-特价菜规则需求,开发完毕升级后,测试验证没有问题。
但第二天中午业务高峰期,运营反馈 个别档口无法下单。
2. 分析
1> 查看线上服务器的mobile.log,定位到下单时-校验特价菜规则方法报了NPE;
2> 进一步追踪发现,部分档口TWindow信息在Redis中 新增的 specialofferrule 字段缺失;
3> 回顾升级思路,
线上所有档口TWindow都新增specialofferrule字段 且设置了 默认值为1;
Redis中的dc_window下所有档口信息缓存集合,也全部清除了。
不应该出现这个问题。
3. 解决
后来同事一语点醒梦中人,昨天晚上升级 发布模块缺失:只升级了manage、mobile,缺失了posapi、shop。
1> 在TWindow中 新增的字段 specialofferrule 字段;
2> TWindow实体类 在项目中的common模块;
3> 项目中的common模块,被manage、mobile、posapi、shop所引用;
4> 虽然代码改动点在manage、mobie下,但是关于TWindow在Redis中的缓存方法,在4个模块中都有。
所以,当请求首次从manage、mobile进入,TWindow缓存有specialofferrule ;
请求首次从shop、posapi进入,TWindow缓存没有specialofferrule。
紧急处理,趁着中午时间,协调运维将线上服务器一台一台下负载,我一台一台将缺失的posapi、shop模块进行线上升级。
4. 总结
当涉及到common基础模块、Redis缓存信息 修改时,需将所有业务模块均升级。
不能报侥幸心理,只升级代码改动模块,出现线上问题!