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

Function addTask

fdbclient/DatabaseBackupAgent.actor.cpp:612–687  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

610REGISTER_TASKFUNC(FinishFullBackupTaskFunc);
611
612struct EraseLogRangeTaskFunc : TaskFuncBase {
613 static StringRef name;
614 static constexpr uint32_t version = 1;
615
616 StringRef getName() const override { return name; };
617
618 Future<Void> execute(Database cx,
619 Reference<TaskBucket> tb,
620 Reference<FutureBucket> fb,
621 Reference<Task> task) override {
622 return _execute(cx, tb, fb, task);
623 };
624 Future<Void> finish(Reference<ReadYourWritesTransaction> tr,
625 Reference<TaskBucket> tb,
626 Reference<FutureBucket> fb,
627 Reference<Task> task) override {
628 return _finish(tr, tb, fb, task);
629 };
630
631 ACTOR static Future<Void> _execute(Database cx,
632 Reference<TaskBucket> taskBucket,
633 Reference<FutureBucket> futureBucket,
634 Reference<Task> task) {
635 state FlowLock lock(CLIENT_KNOBS->BACKUP_LOCK_BYTES);
636
637 wait(checkTaskVersion(cx, task, EraseLogRangeTaskFunc::name, EraseLogRangeTaskFunc::version));
638
639 state Reference<ReadYourWritesTransaction> tr(new ReadYourWritesTransaction(taskBucket->src));
640 loop {
641 try {
642 Version endVersion = BinaryReader::fromStringRef<Version>(
643 task->params[DatabaseBackupAgent::keyEndVersion], Unversioned());
644 wait(eraseLogData(
645 tr,
646 task->params[BackupAgentBase::keyConfigLogUid],
647 task->params[BackupAgentBase::destUid],
648 Optional<Version>(endVersion),
649 CheckBackupUID::True,
650 BinaryReader::fromStringRef<Version>(task->params[BackupAgentBase::keyFolderId], Unversioned())));
651 wait(tr->commit());
652 return Void();
653 } catch (Error& e) {
654 wait(tr->onError(e));
655 }
656 }
657 }
658
659 ACTOR static Future<Key> addTask(Reference<ReadYourWritesTransaction> tr,
660 Reference<TaskBucket> taskBucket,
661 Reference<Task> parentTask,
662 Version endVersion,
663 TaskCompletionKey completionKey,
664 Reference<TaskFuture> waitFor = Reference<TaskFuture>()) {
665 Key doneKey = wait(completionKey.get(tr, taskBucket));
666 auto task = makeReference<Task>(EraseLogRangeTaskFunc::name, EraseLogRangeTaskFunc::version, doneKey, 1);
667
668 copyDefaultParameters(parentTask, task);
669

Callers 15

Future<Void> _finishFunction · 0.85
_finishMethod · 0.85
_finishMethod · 0.85
_finishFunction · 0.85
Future<Void> _finishFunction · 0.85
_finishMethod · 0.85
_finishFunction · 0.85

Calls 5

copyDefaultParametersFunction · 0.85
UnversionedFunction · 0.85
getMethod · 0.65
addTaskMethod · 0.45
onSetAddTaskMethod · 0.45

Tested by

no test coverage detected