MCPcopy Create free account
hub / github.com/apple/foundationdb / RestoreLogDataTaskFunc

Class RestoreLogDataTaskFunc

fdbclient/FileBackupAgent.actor.cpp:3374–3496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3372 return output;
3373}
3374struct RestoreLogDataTaskFunc : RestoreFileTaskFuncBase {
3375 static StringRef name;
3376 static constexpr uint32_t version = 1;
3377 StringRef getName() const override { return name; };
3378
3379 static struct : InputParams {
3380 } Params;
3381
3382 ACTOR static Future<Void> _execute(Database cx,
3383 Reference<TaskBucket> taskBucket,
3384 Reference<FutureBucket> futureBucket,
3385 Reference<Task> task) {
3386 state RestoreConfig restore(task);
3387
3388 state RestoreFile logFile = Params.inputFile().get(task);
3389 state int64_t readOffset = Params.readOffset().get(task);
3390 state int64_t readLen = Params.readLen().get(task);
3391
3392 TraceEvent("FileRestoreLogStart")
3393 .suppressFor(60)
3394 .detail("RestoreUID", restore.getUid())
3395 .detail("FileName", logFile.fileName)
3396 .detail("FileBeginVersion", logFile.version)
3397 .detail("FileEndVersion", logFile.endVersion)
3398 .detail("FileSize", logFile.fileSize)
3399 .detail("ReadOffset", readOffset)
3400 .detail("ReadLen", readLen)
3401 .detail("TaskInstance", THIS_ADDR);
3402
3403 state Reference<ReadYourWritesTransaction> tr(new ReadYourWritesTransaction(cx));
3404 state Reference<IBackupContainer> bc;
3405 state std::vector<KeyRange> ranges;
3406
3407 loop {
3408 try {
3409 tr->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
3410 tr->setOption(FDBTransactionOptions::LOCK_AWARE);
3411
3412 Reference<IBackupContainer> _bc = wait(restore.sourceContainer().getOrThrow(tr));
3413 bc = _bc;
3414
3415 wait(store(ranges, restore.getRestoreRangesOrDefault(tr)));
3416
3417 wait(checkTaskVersion(tr->getDatabase(), task, name, version));
3418 wait(taskBucket->keepRunning(tr, task));
3419
3420 break;
3421 } catch (Error& e) {
3422 wait(tr->onError(e));
3423 }
3424 }
3425
3426 state Key mutationLogPrefix = restore.mutationLogPrefix();
3427 state Reference<IAsyncFile> inFile = wait(bc->readFile(logFile.fileName));
3428 state Standalone<VectorRef<KeyValueRef>> dataOriginal =
3429 wait(decodeMutationLogFileBlock(inFile, readOffset, readLen));
3430
3431 // Filter the KV pairs extracted from the log file block to remove any records known to not be needed for this

Callers

nothing calls this directly

Calls 15

filterLogMutationKVPairsFunction · 0.85
deterministicRandomFunction · 0.85
TraceEventClass · 0.85
keepRunningMethod · 0.80
detailMethod · 0.80
setOptionMethod · 0.65
setMethod · 0.65
commitMethod · 0.65
getCommittedVersionMethod · 0.65
onErrorMethod · 0.65
VoidClass · 0.50
mutationLogPrefixMethod · 0.45

Tested by

no test coverage detected