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,6 +1499,9 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
auto fdGCLock = openGCLock(); auto fdGCLock = openGCLock();
FdLock gcLock(fdGCLock.get(), ltRead, true, "waiting for the big garbage collector lock..."); FdLock gcLock(fdGCLock.get(), ltRead, true, "waiting for the big garbage collector lock...");
StorePathSet validPaths;
{
StorePathSet store; StorePathSet store;
for (auto & i : readDirectory(realStoreDir)) { for (auto & i : readDirectory(realStoreDir)) {
try { try {
@ -1509,11 +1512,11 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
/* Check whether all valid paths actually exist. */ /* Check whether all valid paths actually exist. */
printInfo("checking path existence..."); printInfo("checking path existence...");
StorePathSet validPaths;
StorePathSet done; StorePathSet done;
for (auto & i : queryAllValidPaths()) for (auto & i : queryAllValidPaths())
verifyPath(i, store, done, validPaths, repair, errors); verifyPath(i, store, done, validPaths, repair, errors);
}
/* Optionally, check the content hashes (slow). */ /* Optionally, check the content hashes (slow). */
if (checkContents) { if (checkContents) {