aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/cas.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-12-11 13:09:03 +0100
committerStefan Boberg <[email protected]>2023-12-11 13:09:03 +0100
commit93afeddbc7a5b5df390a29407f5515acd5a70fc1 (patch)
tree6f85ee551aabe20dece64a750c0b2d5d2c5d2d5d /src/zenstore/cas.cpp
parentremoved unnecessary SHA1 references (diff)
parentMake sure that PathFromHandle don't hide true error when throwing exceptions ... (diff)
downloadzen-93afeddbc7a5b5df390a29407f5515acd5a70fc1.tar.xz
zen-93afeddbc7a5b5df390a29407f5515acd5a70fc1.zip
Merge branch 'main' of https://github.com/EpicGames/zen
Diffstat (limited to 'src/zenstore/cas.cpp')
-rw-r--r--src/zenstore/cas.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/zenstore/cas.cpp b/src/zenstore/cas.cpp
index fc549a729..d38099117 100644
--- a/src/zenstore/cas.cpp
+++ b/src/zenstore/cas.cpp
@@ -12,6 +12,7 @@
#include <zencore/fmtutils.h>
#include <zencore/logging.h>
#include <zencore/memory.h>
+#include <zencore/scopeguard.h>
#include <zencore/string.h>
#include <zencore/testing.h>
#include <zencore/testutils.h>
@@ -22,6 +23,7 @@
#include <zenstore/cidstore.h>
#include <zenstore/gc.h>
#include <zenstore/scrubcontext.h>
+#include <zenutil/workerpools.h>
#include <gsl/gsl-lite.hpp>
@@ -104,10 +106,22 @@ CasImpl::Initialize(const CidStoreConfiguration& InConfig)
const bool IsNewStore = OpenOrCreateManifest();
// Initialize payload storage
-
- m_LargeStrategy.Initialize(m_Config.RootDirectory, IsNewStore);
- m_TinyStrategy.Initialize(m_Config.RootDirectory, "tobs", 1u << 28, 16, IsNewStore); // 256 Mb per block
- m_SmallStrategy.Initialize(m_Config.RootDirectory, "sobs", 1u << 30, 4096, IsNewStore); // 1 Gb per block
+ {
+ WorkerThreadPool& WorkerPool = GetSmallWorkerPool();
+ std::vector<std::future<void>> Work;
+ Work.emplace_back(
+ WorkerPool.EnqueueTask(std::packaged_task<void()>{[&]() { m_LargeStrategy.Initialize(m_Config.RootDirectory, IsNewStore); }}));
+ Work.emplace_back(WorkerPool.EnqueueTask(std::packaged_task<void()>{[&]() {
+ m_TinyStrategy.Initialize(m_Config.RootDirectory, "tobs", 1u << 28, 16, IsNewStore); // 256 Mb per block
+ }}));
+ Work.emplace_back(WorkerPool.EnqueueTask(std::packaged_task<void()>{[&]() {
+ m_SmallStrategy.Initialize(m_Config.RootDirectory, "sobs", 1u << 30, 4096, IsNewStore); // 1 Gb per block
+ }}));
+ for (std::future<void>& Result : Work)
+ {
+ Result.get();
+ }
+ }
}
bool