The GitHub Actions job "CI" on kvrocks.git/unstable has failed. Run started by GitHub user git-hulk (triggered by git-hulk).
Head commit for run: 222711fd0e1a6e0f121b3713cacb63bb971b420a / Paragrf <[email protected]> feat(client): Add support for the CLIENT PAUSE/UNPAUSE commands to provide a temporary solution for failover (#3378) ### Summary This PR aims to provide a streamlined solution for graceful failover within the cluster. Previously, proposed failover schemes remained unmerged due to unresolved complexities and architectural concerns. To address this, this modification introduces the CLIENT PAUSE and CLIENT UNPAUSE commands—capabilities that were previously missing in Kvrocks. These commands provide the necessary primitives to temporarily suspend client traffic, ensuring data consistency and a seamless transition during the failover process. ### Background Based on https://github.com/apache/kvrocks/issues/3377, this PR implements two missing Redis protocols. - Implemented CLIENT PAUSE [timeout] [WRITE|ALL] to block client requests. - Implemented CLIENT UNPAUSE to resume normal operations. ### Implementation The behavior of CLIENT PAUSE/UNPAUSE is consistent with Redis: - Blocking Mechanism: After executing CLIENT PAUSE, Kvrocks will block connections attempting to run restricted commands. - Release/Error Handling: These commands are released once the timeout expires or CLIENT UNPAUSE is called. - Role Transition: If a role change occurs (e.g., Master → Slave) during the pause, any previously blocked write requests will return a READONLY error upon resumption. - Exemption mechanism:master-slave replication, and the PAUSE/UNPAUSE protocols themselves will not be blocked. - Testing:Comprehensive C++ unit tests and Go integration tests have been added --------- Co-authored-by: paragrf <[email protected]> Co-authored-by: hulk <[email protected]> Report URL: https://github.com/apache/kvrocks/actions/runs/22748888368 With regards, GitHub Actions via GitBox
