diff --git a/contrib/tiflash-proxy b/contrib/tiflash-proxy index 768e3440b32..6be9eeae33e 160000 --- a/contrib/tiflash-proxy +++ b/contrib/tiflash-proxy @@ -1 +1 @@ -Subproject commit 768e3440b32dafe94d326b298e64a1165ea7ec0e +Subproject commit 6be9eeae33e8aa90af99ed3458f21d6e9b5d7e18 diff --git a/contrib/tiflash-proxy-next-gen b/contrib/tiflash-proxy-next-gen index 10e55dcd086..113679b2168 160000 --- a/contrib/tiflash-proxy-next-gen +++ b/contrib/tiflash-proxy-next-gen @@ -1 +1 @@ -Subproject commit 10e55dcd0867f44cc3503b2f23f477a034c37840 +Subproject commit 113679b2168620b65b5db532312e66c39f25e755 diff --git a/dbms/src/Storages/KVStore/MultiRaft/RaftCommandsKVS.cpp b/dbms/src/Storages/KVStore/MultiRaft/RaftCommandsKVS.cpp index 4ce88ec3555..2683a53c70c 100644 --- a/dbms/src/Storages/KVStore/MultiRaft/RaftCommandsKVS.cpp +++ b/dbms/src/Storages/KVStore/MultiRaft/RaftCommandsKVS.cpp @@ -183,6 +183,10 @@ EngineStoreApplyRes KVStore::handleAdminRaftCmd( case raft_cmdpb::AdminCmdType::PrepareFlashback: case raft_cmdpb::AdminCmdType::FinishFlashback: case raft_cmdpb::AdminCmdType::BatchSwitchWitness: + // Initialy, with tiflash-proxy, TransferLeader will be rewrited into empty write cmd, + // so this case is not possible. However, tiflash-proxy-next-gen will dispatch the TransferLeader to tiflash, so we have to workaround here. + case raft_cmdpb::AdminCmdType::TransferLeader: + case raft_cmdpb::AdminCmdType::UpdateGcPeer: return handleUselessAdminRaftCmd(type, curr_region_id, index, term, tmt); default: break; diff --git a/dbms/src/Storages/KVStore/tests/gtest_new_kvstore.cpp b/dbms/src/Storages/KVStore/tests/gtest_new_kvstore.cpp index aaa1c1f0bd9..e7fd344bc3a 100644 --- a/dbms/src/Storages/KVStore/tests/gtest_new_kvstore.cpp +++ b/dbms/src/Storages/KVStore/tests/gtest_new_kvstore.cpp @@ -393,11 +393,23 @@ try ctx.getTMTContext()), EngineStoreApplyRes::None); + request.set_cmd_type(::raft_cmdpb::AdminCmdType::TransferLeader); + response = response2; + ASSERT_EQ( + kvs.handleAdminRaftCmd( + raft_cmdpb::AdminRequest{request}, + std::move(response), + region_id, + 26, + 6, + ctx.getTMTContext()), + EngineStoreApplyRes::None); + { kvs.debugGetConfigMut().debugSetCompactLogConfig(0, 0, 0, 0); request.set_cmd_type(::raft_cmdpb::AdminCmdType::CompactLog); ASSERT_EQ( - kvs.handleAdminRaftCmd(std::move(request), std::move(response2), region_id, 26, 6, ctx.getTMTContext()), + kvs.handleAdminRaftCmd(std::move(request), std::move(response2), region_id, 27, 6, ctx.getTMTContext()), EngineStoreApplyRes::Persist); } }