# [Critical bug] 跨5.3进行tiflash版本滚动升级过程中需要关闭mpp功能

## Issue

[https://asktug.com/t/topic/662840](https://asktug.com/t/topic/662840)

问题现象：tiflash 跨 5.3 进行滚动版本升级过程中，查询结果可能不对。

## Root Cause

5.3 版本中有个优化exchange的功能修改了 exchange的接口（[https://github.com/pingcap/tiflash/pull/3184](https://github.com/pingcap/tiflash/pull/3184)）。tiflash 5.3 以前版本升级到 5.3 及以后版本的过程中，同时有老版本和新版本存在。因为 exchange 算子接口的优化导致 5.3 以前版本的 tiflash 的 exchange receiver 不能识别 5.3 及以后版本 的 tiflash 的 exchange sender发送的数据。

也就是这个优化 feature 最终破坏了tiflash 滚动升级方式。

## Diagnostic Steps

确定是 5.3 之前的版本升级到 5.3之后的版本，包括6.0版本。

## Resolution

因为是老接口无法识别新接口，所以无法从代码层面修复。只能在跨 5.3 版本升级 tiflash 的时候，不能用滚动升级的方式，只能用关闭所有tiflash 实例再启用新版本的升级方式。这会导致 tiflash 升级过程中查询失败，但是一般滚动升级过程中也不保证所有运行的查询成功，评估下来，这个重启升级方案可以接受。

## Workaround

从 5.3 之前的老版本升级到 5.3 及之后的版本时，不支持在线升级 TiFlash，只能先将 TiFlash 实例关闭（tiup cluster stop -R tiflash），然后离线地地升级集群 (tiup cluster upgrade --offline)，最后 reload 整个集群(tiup cluster reload )的方式升级，保证除 TiFlash 之外的组件不停机升级 。

（ps: 争取把这个重启升级方式做到 tiup 中，避免手动操作。）
