Skip to content

Commit

Permalink
Storage Engine: optimized DataRegion recover log (apache#11996)
Browse files Browse the repository at this point in the history
  • Loading branch information
caozj1011 authored Jan 29, 2024
1 parent 775f169 commit e2f7199
Showing 1 changed file with 16 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -380,37 +380,40 @@ private Map<Long, List<TsFileResource>> splitResourcesByPartition(
private class DataRegionRecoveryContext {
/** number of files to be recovered. */
private final long numOfFilesToRecover;
/** when the change of recoveredFilesNum exceeds this, log check will be triggered. */
private final long filesNumLogCheckTrigger;

/** number of already recovered files. */
private long recoveredFilesNum;
/** last recovery log time. */
private long lastLogTime;
/** last recovery log files num. */
private long lastLogCheckFilesNum;

/** recover performers of unsealed TsFiles. */
private final List<UnsealedTsFileRecoverPerformer> recoverPerformers = new ArrayList<>();

public DataRegionRecoveryContext(long numOfFilesToRecover) {
this.numOfFilesToRecover = numOfFilesToRecover;
this.recoveredFilesNum = 0;
this.filesNumLogCheckTrigger = this.numOfFilesToRecover / 100;
this.lastLogTime = System.currentTimeMillis();
this.lastLogCheckFilesNum = 0;
}

public void incrementRecoveredFilesNum() {
recoveredFilesNum++;
// check log only when 1% more files have been recovered
if (lastLogCheckFilesNum + filesNumLogCheckTrigger < recoveredFilesNum) {
lastLogCheckFilesNum = recoveredFilesNum;
// log only when log interval exceeds recovery log interval
if (lastLogTime + config.getRecoveryLogIntervalInMs() < System.currentTimeMillis()) {
if (recoveredFilesNum < numOfFilesToRecover) {
if (System.currentTimeMillis() - lastLogTime > config.getRecoveryLogIntervalInMs()) {
logger.info(
"The data region {}[{}] has recovered {}%, please wait a moment.",
databaseName, dataRegionId, recoveredFilesNum * 100.0 / numOfFilesToRecover);
"The TsFiles of data region {}[{}] has recovered {}/{}.",
databaseName,
dataRegionId,
recoveredFilesNum,
numOfFilesToRecover);
lastLogTime = System.currentTimeMillis();
}
} else {
logger.info(
"The TsFiles of data region {}[{}] has recovered" + " {}/{}.",
databaseName,
dataRegionId,
numOfFilesToRecover,
numOfFilesToRecover);
}
}
}
Expand Down

0 comments on commit e2f7199

Please sign in to comment.