Only lock once

This commit is contained in:
Patrick Jackson 2023-03-30 18:05:53 -07:00
parent 309753ebb5
commit 804180ad52

View file

@ -1103,7 +1103,7 @@ std::map<StorePath, StorePath> copyPaths(
}; };
// total is accessed by each copy, which are each handled in separate threads // total is accessed by each copy, which are each handled in separate threads
Sync<uint64_t> total = 0; Sync<uint64_t> _total = 0;
for (auto & missingPath : sortedMissing) { for (auto & missingPath : sortedMissing) {
auto info = srcStore.queryPathInfo(missingPath); auto info = srcStore.queryPathInfo(missingPath);
@ -1126,8 +1126,9 @@ std::map<StorePath, StorePath> copyPaths(
PushActivity pact(act.id); PushActivity pact(act.id);
LambdaSink progressSink([&](std::string_view data) { LambdaSink progressSink([&](std::string_view data) {
*total.lock() += data.size(); auto total(_total.lock());
act.progress(*total.lock(), info->narSize); *total += data.size();
act.progress(*total, info->narSize);
}); });
TeeSink tee { sink, progressSink }; TeeSink tee { sink, progressSink };