Skip to content

Commit 42e4ebe

Browse files
yuhaijun999ketor
authored andcommitted
[feat][br] Add br backup get job list check. default true.
1 parent c11cb8f commit 42e4ebe

File tree

5 files changed

+70
-1
lines changed

5 files changed

+70
-1
lines changed

dingo-store-proto

src/br/backup.cc

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,21 @@ butil::Status Backup::Init() {
109109
std::cout << "safe point ts check ok" << std::endl;
110110
DINGO_LOG(INFO) << "safe point ts check ok";
111111

112+
// Get the job list to see whether there is a merge split being executed, etc.
113+
if (FLAGS_br_backup_enable_get_job_list_check) {
114+
status = GetJobListCheck();
115+
if (!status.ok()) {
116+
DINGO_LOG(ERROR) << Utils::FormatStatusError(status);
117+
return status;
118+
}
119+
std::cout << "br_backup_enable_get_job_list_check is true, get job list check ok" << std::endl;
120+
DINGO_LOG(INFO) << "br_backup_enable_get_job_list_check is true, get job list check ok";
121+
122+
} else {
123+
std::cout << "br_backup_enable_get_job_list_check is false, skip get job list check" << std::endl;
124+
DINGO_LOG(INFO) << "br_backup_enable_get_job_list_check is false, skip get job list check";
125+
}
126+
112127
backup_task_id_ = dingodb::UUIDGenerator::GenerateUUID();
113128

114129
auto lambda_exit_function = [this, &status]() {
@@ -1270,4 +1285,53 @@ butil::Status Backup::DoFinish() {
12701285
return butil::Status::OK();
12711286
}
12721287

1288+
butil::Status Backup::GetJobListCheck() {
1289+
dingodb::pb::coordinator::GetJobListRequest request;
1290+
dingodb::pb::coordinator::GetJobListResponse response;
1291+
1292+
request.mutable_request_info()->set_request_id(br::Helper::GetRandInt());
1293+
1294+
DINGO_LOG_IF(INFO, FLAGS_br_log_switch_backup_detail_detail) << request.DebugString();
1295+
1296+
butil::Status status = br::InteractionManager::GetInstance().GetCoordinatorInteraction()->SendRequest(
1297+
"CoordinatorService", "GetJobList", request, response);
1298+
if (!status.ok()) {
1299+
std::string s = fmt::format("Fail to get job list, status={}", Utils::FormatStatusError(status));
1300+
DINGO_LOG(ERROR) << s;
1301+
return status;
1302+
}
1303+
1304+
if (response.error().errcode() != dingodb::pb::error::OK) {
1305+
std::string s = fmt::format("Fail to get job list, error={}", Utils::FormatResponseError(response));
1306+
DINGO_LOG(ERROR) << s;
1307+
return butil::Status(dingodb::pb::error::EINTERNAL, s);
1308+
}
1309+
1310+
DINGO_LOG_IF(INFO, FLAGS_br_log_switch_backup_detail_detail) << response.DebugString();
1311+
1312+
for (const auto& job : response.job_list()) {
1313+
for (const auto& task : job.tasks()) {
1314+
for (const auto& store_operation : task.store_operations()) {
1315+
for (const auto& region_cmd : store_operation.region_cmds()) {
1316+
if (region_cmd.region_cmd_type() == dingodb::pb::coordinator::RegionCmdType::CMD_SPLIT ||
1317+
region_cmd.region_cmd_type() == dingodb::pb::coordinator::RegionCmdType::CMD_MERGE ||
1318+
region_cmd.region_cmd_type() == dingodb::pb::coordinator::RegionCmdType::CMD_CHANGE_PEER ||
1319+
region_cmd.region_cmd_type() == dingodb::pb::coordinator::RegionCmdType::CMD_TRANSFER_LEADER) {
1320+
std::string s = fmt::format("exist job list, region_cmd_type={}({})",
1321+
dingodb::pb::coordinator::RegionCmdType_Name(region_cmd.region_cmd_type()),
1322+
static_cast<int>(region_cmd.region_cmd_type()));
1323+
DINGO_LOG(ERROR) << s;
1324+
status = butil::Status(dingodb::pb::error::EBACKUP_DINGO_STORE_JOB_LIST_EXIST, s);
1325+
goto _err;
1326+
}
1327+
}
1328+
}
1329+
}
1330+
}
1331+
1332+
_err:
1333+
1334+
return status;
1335+
}
1336+
12731337
} // namespace br

src/br/backup.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class Backup : public std::enable_shared_from_this<Backup> {
7575
const dingodb::pb::common::VersionInfo& version_info_remote);
7676

7777
butil::Status DoFinish();
78+
static butil::Status GetJobListCheck();
7879

7980
std::string coor_url_;
8081
std::string br_type_;

src/br/parameter.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,6 @@ DEFINE_string(br_client_method_param1, "", "br client method param1. default emp
117117

118118
DEFINE_bool(just_store, false, "just store server");
119119

120+
DEFINE_bool(br_backup_enable_get_job_list_check, true, "br backup enable get job list check. default true");
121+
120122
} // namespace br

src/br/parameter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ DECLARE_string(br_client_method_param1);
165165

166166
DECLARE_bool(just_store);
167167

168+
DECLARE_bool(br_backup_enable_get_job_list_check);
169+
168170
} // namespace br
169171

170172
#endif // DINGODB_BR_PARAMETER_H_

0 commit comments

Comments
 (0)