Note:
This topic has been translated from a Chinese forum by GPT and might contain errors.Original topic: 如何优雅地带着业务升级 tikv版本

Scenario: Currently, our business directly uses the transaction API of the community version of TiKV, with the client being github.com/tikv/client-go/v2. The transaction logic includes a set of key get and then set operations (thus, if TiKV detects a conflict, there is a possibility of transaction failure).
Version: Planning to upgrade from TiKV version 4.0.5 to 5.2.1.
Deployment method: Using Docker for deployment, without using TiUP for management.
Since there are very few users directly using TiKV on the internet, and no official upgrade process documentation could be found, we simply performed a rolling restart (restarting one node, querying the node status with pd-ctl to ensure it is up, then waiting 10 seconds before proceeding to the next one). During the implementation process, some TiKV transactions failed due to conflict errors. Logs confirm that these transactions were not executed concurrently (logical conflicts are impossible).
Attached is a screenshot of the relevant error logs.
I would like to ask if there is a more graceful way to reduce or avoid such situations. Thank you.