用户下单订单信息中空白渠道遗失
在6月份7月份最近,发生用户下单后丢失渠道问题。初步测试发现,没有渠道编码的时候有会有默认值兜底,要么是手动登录要么是一键登录。在不知道链接和场景的情况下排查次问题。回到丢失信息问题中,决定从根本找起。
从缓冲中取出来并没有做非空处理,太依赖缓存中的数据一定不为空、导致设置值时为空。
针对为什么为空开始排查
思路是:前端->操作是否存在参数丢失->后端在参数丢失的情况下是否真的有默认值。
经过1天的排查。
*前端没问题链接没问题->操作中不存在参数丢失->就算参数没有也会有默认值->一键登录
于是方向开始指向默认值是怎么设置的,看完代码后确认这里的默认值不完全绝对,为什么这么说,请看代码。
如果channelCode渠道参数丢失的话会走004,这样会得到默认值 “一键登录”。
但
假设,channelCode=4545。这个数在表里并没有,此时,tbChannelPO将为Null,在314行将会报空指针异常,而此时捕捉异常处理后剩下的代码将不在执行。也就直接跳过了设置缓存的代码。
为了验证以上论点,我在313,316行加了日志。进行测试
看到测试结果后心满意足。确实是此问题造成的。着也是为什么我说渠道的默认值不完全的原因。
总结
对于缓存和默认值类的不能太过于依赖惯性经验,这里造成这种原因就是因为,商店传来的渠道编码。在平台的库里查不到。这种就属于开始约定的不变,后来增量,又没有通知到平台导致