事件回放
2020.04.09 10:00:00 陆续有人报,门店客户转移时,查看门店客户转移详情时报错500,开始时频率不高,后面几天陆续变得频繁。
2020.04.10 10:00:00 期间通过手动修复数据,使BD能够正常进行相关操作。
2020.04.11 10:00:00 在家开始排查具体问题,经排查之后发现,门店在创建的时候会先调用方法生成门店ES数据,此时门店ES数据中包含了门店KA标签数据(初始化为非KA),但此时SOS会调用SLS的打标签逻辑,使SLS中保存门店非KA的门店标签关系,但是因为ES数据延迟,SLS在操作门店ES加标签的时候,门店ID对应查询不到ES中的数据,导致门店标签关系维护失败。门店其他标签在进行操作操作的时候会根据数据库已有的门店标签关系更新ES,但此时没有非KA标签,故而门店客户转移封装门店KA标签数据时报空指针异常。
2020.04.12 10:00:00 优化代码逻辑,SLS更新门店标签时先维护数据库,再进行门店ES的查询和更新,保证门店标签关系在ES标签操作失败后仍然可以维护在数据库中。
2020.04.13 17:00:00 测试在测试过程中发现问题,门店的审核状态更新有问题,门店在进行转移之后,门店的审核状态没有发生改变。
2020.04.13 18:00:00 开始排查问题,通过查看BSS日志,发现BSS方法 updateEsShopIndex 和 updateEsShopIndexWithField 这两个方法会在短时间内调用(同一ShopId),所以是updateEsShopIndex 覆盖了后面方法的修改,原因是
2020.04.13 19:00:00 改造门店ES updateEsShopIndex,将所需要更新的字段拆分为按字段更新的方式,另外,针对门店创建ES操作之后,再延迟1.5秒(可配置)之后,再对门店的ES字段进行操作。