MCPcopy Create free account
hub / github.com/apple/foundationdb / string> getStatusJSON

Method string> getStatusJSON

fdbclient/FileBackupAgent.actor.cpp:4931–5053  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4929 }
4930
4931 ACTOR static Future<std::string> getStatusJSON(FileBackupAgent* backupAgent, Database cx, std::string tagName) {
4932 state Reference<ReadYourWritesTransaction> tr(new ReadYourWritesTransaction(cx));
4933
4934 loop {
4935 try {
4936 state JsonBuilderObject doc;
4937 doc.setKey("SchemaVersion", "1.0.0");
4938
4939 tr->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
4940 tr->setOption(FDBTransactionOptions::LOCK_AWARE);
4941
4942 state KeyBackedTag tag = makeBackupTag(tagName);
4943 state Optional<UidAndAbortedFlagT> uidAndAbortedFlag;
4944 state Optional<Value> paused;
4945 state Version recentReadVersion;
4946
4947 wait(store(paused, tr->get(backupAgent->taskBucket->getPauseKey())) &&
4948 store(uidAndAbortedFlag, tag.get(tr)) && store(recentReadVersion, tr->getReadVersion()));
4949
4950 doc.setKey("BackupAgentsPaused", paused.present());
4951 doc.setKey("Tag", tag.tagName);
4952
4953 if (uidAndAbortedFlag.present()) {
4954 doc.setKey("UID", uidAndAbortedFlag.get().first.toString());
4955
4956 state BackupConfig config(uidAndAbortedFlag.get().first);
4957
4958 state EBackupState backupState =
4959 wait(config.stateEnum().getD(tr, Snapshot::False, EBackupState::STATE_NEVERRAN));
4960 JsonBuilderObject statusDoc;
4961 statusDoc.setKey("Name", BackupAgentBase::getStateName(backupState));
4962 statusDoc.setKey("Description", BackupAgentBase::getStateText(backupState));
4963 statusDoc.setKey("Completed", backupState == EBackupState::STATE_COMPLETED);
4964 statusDoc.setKey("Running", BackupAgentBase::isRunnable(backupState));
4965 doc.setKey("Status", statusDoc);
4966
4967 state Future<Void> done = Void();
4968
4969 if (backupState != EBackupState::STATE_NEVERRAN) {
4970 state Reference<IBackupContainer> bc;
4971 state TimestampedVersion latestRestorable;
4972
4973 wait(
4974 store(latestRestorable, getTimestampedVersion(tr, config.getLatestRestorableVersion(tr))) &&
4975 store(bc, config.backupContainer().getOrThrow(tr)));
4976
4977 doc.setKey("Restorable", latestRestorable.present());
4978
4979 if (latestRestorable.present()) {
4980 JsonBuilderObject o = latestRestorable.toJSON();
4981 if (backupState != EBackupState::STATE_COMPLETED) {
4982 o.setKey("LagSeconds",
4983 (recentReadVersion - latestRestorable.version.get()) /
4984 CLIENT_KNOBS->CORE_VERSIONSPERSECOND);
4985 }
4986 doc.setKey("LatestRestorablePoint", o);
4987 }
4988 doc.setKey("DestinationURL", bc->getURL());

Callers

nothing calls this directly

Calls 15

makeBackupTagFunction · 0.85
storeFunction · 0.85
ifFunction · 0.85
backupContainerMethod · 0.80
stopWhenDoneMethod · 0.80
snapshotBeginVersionMethod · 0.80
latestLogEndVersionMethod · 0.80

Tested by

no test coverage detected