LocalStore::verifyPath: Try to clarify data flow with more scopes

It was initially unclear to me which of these are temporary state for
the verify paths computation, and which of these are the results of that
computation to be used in the rest of the function. Now, it is clear,
and enforced.
This commit is contained in:
John Ericson 2023-07-31 12:22:06 -04:00
parent 2a5f5fbb17
commit 6525265f46

View file

@ -1499,21 +1499,24 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
auto fdGCLock = openGCLock();
FdLock gcLock(fdGCLock.get(), ltRead, true, "waiting for the big garbage collector lock...");
StorePathSet store;
for (auto & i : readDirectory(realStoreDir)) {
try {
store.insert({i.name});
} catch (BadStorePath &) { }
}
/* Check whether all valid paths actually exist. */
printInfo("checking path existence...");
StorePathSet validPaths;
StorePathSet done;
for (auto & i : queryAllValidPaths())
verifyPath(i, store, done, validPaths, repair, errors);
{
StorePathSet store;
for (auto & i : readDirectory(realStoreDir)) {
try {
store.insert({i.name});
} catch (BadStorePath &) { }
}
/* Check whether all valid paths actually exist. */
printInfo("checking path existence...");
StorePathSet done;
for (auto & i : queryAllValidPaths())
verifyPath(i, store, done, validPaths, repair, errors);
}
/* Optionally, check the content hashes (slow). */
if (checkContents) {