前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些让我印象深刻的bug--05

那些让我印象深刻的bug--05

作者头像
小博测试成长之路
发布2022-06-15 11:45:07
2980
发布2022-06-15 11:45:07
举报
文章被收录于专栏:软件测试学习软件测试学习

最近在测试过程中,遇到了一个线上的bug,也是跟缓存加载有关,下面简单地描述一下场景。

背景:

有一个缓存服务cache-services,里面提供了一个对外的接口,可以根据id进行查询,返回一系列的数据,其中有一个字段的返回值,在客户端会根据这个字段的值做一些校验处理,比如字段值为A的时候,就显示某个按钮。上线后过了几天,发现app上某个按钮本应该显示的,突然之间不显示了,这个就是问题的现象。

问题原因:

出现问题的时候,首先是下游找过来我们排查问题,初步定位是因为某个接口没有返回一个字段的值,导致客户端没有展示这个按钮。

下面再来简单的讲一下缓存的加载设计:

假设现在有两张表,t1和t2,他们通过一个叫id的字段进行关联。由于表里面的数据量比较大,因此接口会从缓存中去查询数据,不会直接查库,然后数据库里面的数据有更新的时候,每1分钟会去刷新一次缓存中增量变化的数据。

假设数据库表设计如下:

t1

t2

id

id

type

source

name

createTime

createTime

updateTime

updateTime

由于t1表是之前就已经存在的,已经会加载到缓存中去,并且之前的逻辑是每次t1的数据有更新时,会把对应id的数据覆盖掉。

最近,由于开发新的功能,加入了t2的表,换了一个人开发,在设计的时候,开发设计的是:在t2表里面有数据的时候,新增/更新数据时,把对应的字段source追加到之前对应id的数据的缓存中。由于我一开始测的时候,不清楚整个缓存加载的逻辑和设计,没有考虑到t1的数据有更新的时候,会覆盖之前的缓存,结果线上有一天t1的数据发生了变化,然后没有把source字段重新加到缓存中去。

问题解决的措施:

在加载主表缓存的时候,同时把其他附属表的相关字段也重新加载一遍。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小博测试成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档