造成空白渠道原因

本文详细分析了一起用户下单后渠道信息丢失的问题,问题根源在于对缓存中数据的非空处理不当。前端和链接未发现问题,后端在参数丢失时依赖默认值,但当渠道编码不存在于数据库时,会导致空指针异常,跳过设置缓存的代码。解决方案是加强参数检查和异常处理,避免对默认值的过度依赖。该案例提醒我们在开发中要谨慎处理缓存和默认值,确保系统鲁棒性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户下单订单信息中空白渠道遗失

在6月份7月份最近,发生用户下单后丢失渠道问题。初步测试发现,没有渠道编码的时候有会有默认值兜底,要么是手动登录要么是一键登录。在不知道链接和场景的情况下排查次问题。回到丢失信息问题中,决定从根本找起。

  • 为什么会丢失?

从缓冲中取出来并没有做非空处理,太依赖缓存中的数据一定不为空、导致设置值时为空。在这里插入图片描述

  • 为什么为空?参数没带进来吗?不是说有默认值兜底吗?

针对为什么为空开始排查
思路是:前端->操作是否存在参数丢失->后端在参数丢失的情况下是否真的有默认值。
经过1天的排查。
*前端没问题链接没问题->操作中不存在参数丢失->就算参数没有也会有默认值->一键登录
于是方向开始指向默认值是怎么设置的,看完代码后确认这里的默认值不完全绝对,为什么这么说,请看代码。
在这里插入图片描述
如果channelCode渠道参数丢失的话会走004,这样会得到默认值 “一键登录”。

假设,channelCode=4545。这个数在表里并没有,此时,tbChannelPO将为Null,在314行将会报空指针异常,而此时捕捉异常处理后剩下的代码将不在执行。也就直接跳过了设置缓存的代码。
为了验证以上论点,我在313,316行加了日志。进行测试
在这里插入图片描述
看到测试结果后心满意足。确实是此问题造成的。着也是为什么我说渠道的默认值不完全的原因。

总结

对于缓存和默认值类的不能太过于依赖惯性经验,这里造成这种原因就是因为,商店传来的渠道编码。在平台的库里查不到。这种就属于开始约定的不变,后来增量,又没有通知到平台导致

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值