【标题】(请简要描述下实现的内容)
【bugfix】 修复按需回放redo阶段可能存在死锁的问题
【实现内容】:
通过代码走读发现,按需回放redo阶段有可能出现缓冲区分区锁和redo hashmap锁可能存在死锁问题,主要原因是在BufferAlloc第二个pinbuffer处添加的重试逻辑没有释放new_partition_lock,故添加了相关的释放逻辑,并针对由于释放new_partition_lock导致的buffer可能被释放的问题,添加异常处理。
【根因分析】:
参考实现内容
【实现方案】:
参考半无锁优化特性,按需回放redo阶段场景,pin buffer前先释放添加new_partition_lock。
【关联需求或issue】:

【开发自验报告】:

  1. 请附上自验结果(内容或者截图)
  2. 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
  3. 是否涉及资料修改,如是,在docs仓库补充资料
  4. 是否考虑升级场景(系统表修改、日志持久化以及修改执行态数据格式)
  5. 是否考虑在线扩容等扩展场景
  6. 是否考虑异常场景/并发场景/前向兼容/性能场景
  7. 是否对其他模块产生影响

【其他说明】: