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

Class BackupLogRangeTaskFunc

fdbclient/FileBackupAgent.actor.cpp:1966–2084  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1964REGISTER_TASKFUNC(BackupSnapshotDispatchTask);
1965
1966struct BackupLogRangeTaskFunc : BackupTaskFuncBase {
1967 static StringRef name;
1968 static constexpr uint32_t version = 1;
1969
1970 static struct {
1971 static TaskParam<bool> addBackupLogRangeTasks() { return LiteralStringRef(__FUNCTION__); }
1972 static TaskParam<int64_t> fileSize() { return LiteralStringRef(__FUNCTION__); }
1973 static TaskParam<Version> beginVersion() { return LiteralStringRef(__FUNCTION__); }
1974 static TaskParam<Version> endVersion() { return LiteralStringRef(__FUNCTION__); }
1975 } Params;
1976
1977 StringRef getName() const override { return name; };
1978
1979 Future<Void> execute(Database cx,
1980 Reference<TaskBucket> tb,
1981 Reference<FutureBucket> fb,
1982 Reference<Task> task) override {
1983 return _execute(cx, tb, fb, task);
1984 };
1985 Future<Void> finish(Reference<ReadYourWritesTransaction> tr,
1986 Reference<TaskBucket> tb,
1987 Reference<FutureBucket> fb,
1988 Reference<Task> task) override {
1989 return _finish(tr, tb, fb, task);
1990 };
1991
1992 ACTOR static Future<Void> _execute(Database cx,
1993 Reference<TaskBucket> taskBucket,
1994 Reference<FutureBucket> futureBucket,
1995 Reference<Task> task) {
1996 state Reference<FlowLock> lock(new FlowLock(CLIENT_KNOBS->BACKUP_LOCK_BYTES));
1997
1998 wait(checkTaskVersion(cx, task, BackupLogRangeTaskFunc::name, BackupLogRangeTaskFunc::version));
1999
2000 state Version beginVersion = Params.beginVersion().get(task);
2001 state Version endVersion = Params.endVersion().get(task);
2002
2003 state BackupConfig config(task);
2004 state Reference<IBackupContainer> bc;
2005
2006 state Reference<ReadYourWritesTransaction> tr(new ReadYourWritesTransaction(cx));
2007 loop {
2008 tr->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
2009 tr->setOption(FDBTransactionOptions::LOCK_AWARE);
2010 // Wait for the read version to pass endVersion
2011 try {
2012 wait(taskBucket->keepRunning(tr, task));
2013
2014 if (!bc) {
2015 // Backup container must be present if we're still here
2016 Reference<IBackupContainer> _bc = wait(config.backupContainer().getOrThrow(tr));
2017 bc = _bc;
2018 }
2019
2020 Version currentVersion = tr->getReadVersion().get();
2021 if (endVersion < currentVersion)
2022 break;
2023

Callers

nothing calls this directly

Calls 15

getLogRangesFunction · 0.85
deterministicRandomFunction · 0.85
mapFunction · 0.85
errorOrFunction · 0.85
waitForAllFunction · 0.85
writeLogFileMethod · 0.80
substrMethod · 0.80
setMethod · 0.65
VoidClass · 0.50
getOrThrowMethod · 0.45
destUidValueMethod · 0.45

Tested by

no test coverage detected