cherry pick from #39987
This commit is contained in:
@ -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.
|
||||
*/
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user