[chore](backup) limit the involved tablets in a backup job #39987 (#40080)

cherry pick from #39987
This commit is contained in:
walter
2024-08-29 12:03:14 +08:00
committed by GitHub
parent c5d9e178be
commit 93da0ebaf4
2 changed files with 20 additions and 0 deletions

View File

@ -1526,6 +1526,15 @@ public class Config extends ConfigBase {
@ConfField(mutable = true, masterOnly = true)
public static int max_backup_restore_job_num_per_db = 10;
/**
* Control the max num of tablets per backup job involved.
*/
@ConfField(mutable = true, masterOnly = true, description = {
"用于控制每次 backup job 允许备份的 tablet 上限,以避免 OOM",
"Control the max num of tablets per backup job involved, to avoid OOM"
})
public static int max_backup_tablets_per_job = 300000;
/**
* whether to ignore table that not support type when backup, and not report exception.
*/

View File

@ -513,6 +513,17 @@ public class BackupJob extends AbstractJob {
}
}
// Limit the max num of tablets involved in a backup job, to avoid OOM.
if (unfinishedTaskIds.size() > Config.max_backup_tablets_per_job) {
String msg = String.format("the num involved tablets %d exceeds the limit %d, "
+ "which might cause the FE OOM, change config `max_backup_tablets_per_job` "
+ "to change this limitation",
unfinishedTaskIds.size(), Config.max_backup_tablets_per_job);
LOG.warn(msg);
status = new Status(ErrCode.COMMON_ERROR, msg);
return;
}
backupMeta = new BackupMeta(copiedTables, copiedResources);
// send tasks