mirror of
https://github.com/facebook/sapling.git
synced 2024-10-05 06:18:07 +03:00
refactor BackingStoreOptions
Reviewed By: jdelliot Differential Revision: D54032139 fbshipit-source-id: a49662b4d62c8388f5bd187fc20a98ab6d852409
This commit is contained in:
parent
50ac261ab0
commit
a71c6e26ff
@ -140,13 +140,13 @@ std::shared_ptr<HgQueuedBackingStore> createHgQueuedBackingStore(
|
||||
const BackingStoreFactory::CreateParams& params,
|
||||
const AbsolutePath& repoPath,
|
||||
std::shared_ptr<ReloadableConfig> reloadableConfig,
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> cppOptions) {
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions) {
|
||||
auto underlyingStore = std::make_unique<HgBackingStore>(
|
||||
repoPath,
|
||||
params.localStore,
|
||||
params.serverState->getThreadPool().get(),
|
||||
reloadableConfig,
|
||||
std::move(cppOptions),
|
||||
std::move(runtimeOptions),
|
||||
params.sharedStats.copy(),
|
||||
params.serverState->getStructuredLogger(),
|
||||
¶ms.serverState->getFaultInjector());
|
||||
@ -174,10 +174,10 @@ void EdenMain::registerStandardBackingStores() {
|
||||
const auto repoPath = realpath(params.name);
|
||||
auto reloadableConfig = params.serverState->getReloadableConfig();
|
||||
|
||||
auto cppOptions = std::make_unique<HgDatapackStore::CppOptions>(
|
||||
auto runtimeOptions = std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/false);
|
||||
auto hgQueuedBackingStore = createHgQueuedBackingStore(
|
||||
params, repoPath, reloadableConfig, std::move(cppOptions));
|
||||
params, repoPath, reloadableConfig, std::move(runtimeOptions));
|
||||
|
||||
auto localStoreCaching = reloadableConfig->getEdenConfig()
|
||||
->hgEnableBlobMetaLocalStoreCaching.getValue()
|
||||
@ -202,10 +202,10 @@ void EdenMain::registerStandardBackingStores() {
|
||||
: LocalStoreCachedBackingStore::CachingPolicy::Trees;
|
||||
auto hgSparseFilter = std::make_unique<HgSparseFilter>(repoPath);
|
||||
|
||||
auto cppOptions = std::make_unique<HgDatapackStore::CppOptions>(
|
||||
auto options = std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/true);
|
||||
auto hgQueuedBackingStore = createHgQueuedBackingStore(
|
||||
params, repoPath, reloadableConfig, std::move(cppOptions));
|
||||
params, repoPath, reloadableConfig, std::move(options));
|
||||
auto wrappedStore = std::make_shared<FilteredBackingStore>(
|
||||
std::move(hgQueuedBackingStore), std::move(hgSparseFilter));
|
||||
return std::make_shared<LocalStoreCachedBackingStore>(
|
||||
|
@ -92,27 +92,27 @@ class SaplingRetryThreadFactory : public folly::InitThreadFactory {
|
||||
[] {}) {}
|
||||
};
|
||||
|
||||
HgDatapackStore::SaplingNativeOptions computeRustOptions() {
|
||||
HgDatapackStore::SaplingNativeOptions computeSaplingOptions() {
|
||||
HgDatapackStore::SaplingNativeOptions options{};
|
||||
options.allow_retries = false;
|
||||
return options;
|
||||
}
|
||||
|
||||
HgDatapackStore::SaplingNativeOptions computeTestRustOptions() {
|
||||
HgDatapackStore::SaplingNativeOptions computeTestSaplingOptions() {
|
||||
HgDatapackStore::SaplingNativeOptions options{};
|
||||
options.allow_retries = false;
|
||||
return options;
|
||||
}
|
||||
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> computeCppOptions(
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options) {
|
||||
std::unique_ptr<HgBackingStoreOptions> computeRuntimeOptions(
|
||||
std::unique_ptr<HgBackingStoreOptions> options) {
|
||||
options->ignoreFilteredPathsConfig =
|
||||
options->ignoreFilteredPathsConfig.value_or(false);
|
||||
return options;
|
||||
}
|
||||
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> computeTestCppOptions(
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options) {
|
||||
std::unique_ptr<HgBackingStoreOptions> computeTestRuntimeOptions(
|
||||
std::unique_ptr<HgBackingStoreOptions> options) {
|
||||
options->ignoreFilteredPathsConfig =
|
||||
options->ignoreFilteredPathsConfig.value_or(false);
|
||||
return options;
|
||||
@ -125,7 +125,7 @@ HgBackingStore::HgBackingStore(
|
||||
std::shared_ptr<LocalStore> localStore,
|
||||
UnboundedQueueExecutor* serverThreadPool,
|
||||
std::shared_ptr<ReloadableConfig> config,
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options,
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions,
|
||||
EdenStatsPtr stats,
|
||||
std::shared_ptr<StructuredLogger> logger,
|
||||
FaultInjector* FOLLY_NONNULL faultInjector)
|
||||
@ -156,8 +156,8 @@ HgBackingStore::HgBackingStore(
|
||||
logger_(std::move(logger)),
|
||||
datapackStore_(
|
||||
repository,
|
||||
computeRustOptions(),
|
||||
computeCppOptions(std::move(options)),
|
||||
computeSaplingOptions(),
|
||||
computeRuntimeOptions(std::move(runtimeOptions)),
|
||||
config_,
|
||||
logger_,
|
||||
faultInjector) {}
|
||||
@ -171,7 +171,7 @@ HgBackingStore::HgBackingStore(
|
||||
AbsolutePathPiece repository,
|
||||
std::shared_ptr<ReloadableConfig> config,
|
||||
std::shared_ptr<LocalStore> localStore,
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options,
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions,
|
||||
EdenStatsPtr stats,
|
||||
FaultInjector* FOLLY_NONNULL faultInjector)
|
||||
: localStore_{std::move(localStore)},
|
||||
@ -182,8 +182,8 @@ HgBackingStore::HgBackingStore(
|
||||
logger_(nullptr),
|
||||
datapackStore_(
|
||||
repository,
|
||||
computeTestRustOptions(),
|
||||
computeTestCppOptions(std::move(options)),
|
||||
computeTestSaplingOptions(),
|
||||
computeTestRuntimeOptions(std::move(runtimeOptions)),
|
||||
config_,
|
||||
logger_,
|
||||
faultInjector) {}
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "eden/fs/store/BackingStore.h"
|
||||
#include "eden/fs/store/LocalStore.h"
|
||||
#include "eden/fs/store/ObjectFetchContext.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/store/hg/HgDatapackStore.h"
|
||||
#include "eden/fs/telemetry/RequestMetricsScope.h"
|
||||
#include "eden/fs/utils/PathFuncs.h"
|
||||
@ -49,7 +50,7 @@ class HgBackingStore {
|
||||
std::shared_ptr<LocalStore> localStore,
|
||||
UnboundedQueueExecutor* serverThreadPool,
|
||||
std::shared_ptr<ReloadableConfig> config,
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options,
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions,
|
||||
EdenStatsPtr edenStats,
|
||||
std::shared_ptr<StructuredLogger> logger,
|
||||
FaultInjector* FOLLY_NONNULL faultInjector);
|
||||
@ -63,7 +64,7 @@ class HgBackingStore {
|
||||
AbsolutePathPiece repository,
|
||||
std::shared_ptr<ReloadableConfig> config,
|
||||
std::shared_ptr<LocalStore> localStore,
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options,
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions,
|
||||
EdenStatsPtr,
|
||||
FaultInjector* FOLLY_NONNULL faultInjector);
|
||||
|
||||
|
27
eden/fs/store/hg/HgBackingStoreOptions.h
Normal file
27
eden/fs/store/hg/HgBackingStoreOptions.h
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This software may be used and distributed according to the terms of the
|
||||
* GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
|
||||
namespace facebook::eden {
|
||||
|
||||
class HgBackingStoreOptions {
|
||||
public:
|
||||
/* implicit */ HgBackingStoreOptions(
|
||||
std::optional<bool> ignoreFilteredPathsConfig)
|
||||
: ignoreFilteredPathsConfig{ignoreFilteredPathsConfig} {}
|
||||
|
||||
bool ignoreConfigFilter() {
|
||||
return ignoreFilteredPathsConfig.value_or(false);
|
||||
}
|
||||
|
||||
std::optional<bool> ignoreFilteredPathsConfig;
|
||||
};
|
||||
|
||||
} // namespace facebook::eden
|
@ -193,7 +193,7 @@ void HgDatapackStore::getTreeBatch(const ImportRequestsList& importRequests) {
|
||||
treeRequest->proxyHash.path(),
|
||||
hgObjectIdFormat,
|
||||
*filteredPaths,
|
||||
cppOptions_->ignoreConfigFilter())};
|
||||
runtimeOptions_->ignoreConfigFilter())};
|
||||
});
|
||||
}
|
||||
|
||||
@ -238,7 +238,7 @@ folly::Try<TreePtr> HgDatapackStore::getTree(
|
||||
path,
|
||||
std::move(hgObjectIdFormat),
|
||||
std::move(*filteredPaths),
|
||||
cppOptions_->ignoreConfigFilter())};
|
||||
runtimeOptions_->ignoreConfigFilter())};
|
||||
} else {
|
||||
return GetTreeResult{tree.exception()};
|
||||
}
|
||||
@ -259,7 +259,7 @@ TreePtr HgDatapackStore::getTreeLocal(
|
||||
proxyHash.path(),
|
||||
hgObjectIdFormat,
|
||||
*filteredPaths,
|
||||
cppOptions_->ignoreConfigFilter());
|
||||
runtimeOptions_->ignoreConfigFilter());
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "eden/fs/model/BlobFwd.h"
|
||||
#include "eden/fs/model/BlobMetadataFwd.h"
|
||||
#include "eden/fs/model/TreeFwd.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/telemetry/RequestMetricsScope.h"
|
||||
#include "eden/fs/utils/PathFuncs.h"
|
||||
#include "eden/scm/lib/backingstore/include/SaplingNativeBackingStore.h"
|
||||
@ -33,24 +34,10 @@ class RefPtr;
|
||||
class ObjectFetchContext;
|
||||
using ObjectFetchContextPtr = RefPtr<ObjectFetchContext>;
|
||||
|
||||
class HgDatapackStoreOptions {
|
||||
public:
|
||||
/* implicit */ HgDatapackStoreOptions(
|
||||
std::optional<bool> ignoreFilteredPathsConfig)
|
||||
: ignoreFilteredPathsConfig{ignoreFilteredPathsConfig} {}
|
||||
|
||||
bool ignoreConfigFilter() {
|
||||
return ignoreFilteredPathsConfig.value_or(false);
|
||||
}
|
||||
|
||||
std::optional<bool> ignoreFilteredPathsConfig;
|
||||
};
|
||||
|
||||
class HgDatapackStore {
|
||||
public:
|
||||
using SaplingNativeOptions = sapling::SaplingNativeBackingStoreOptions;
|
||||
using CppOptions = HgDatapackStoreOptions;
|
||||
using ImportRequestsList = std::vector<std::shared_ptr<HgImportRequest>>;
|
||||
using SaplingNativeOptions = sapling::SaplingNativeBackingStoreOptions;
|
||||
|
||||
/**
|
||||
* FaultInjector must be valid for the lifetime of the HgDatapackStore.
|
||||
@ -61,12 +48,12 @@ class HgDatapackStore {
|
||||
HgDatapackStore(
|
||||
AbsolutePathPiece repository,
|
||||
const SaplingNativeOptions& saplingNativeOptions,
|
||||
std::unique_ptr<CppOptions> cppOptions,
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions,
|
||||
std::shared_ptr<ReloadableConfig> config,
|
||||
std::shared_ptr<StructuredLogger> logger,
|
||||
FaultInjector* FOLLY_NONNULL faultInjector)
|
||||
: store_{repository.view(), saplingNativeOptions},
|
||||
cppOptions_{std::move(cppOptions)},
|
||||
runtimeOptions_{std::move(runtimeOptions)},
|
||||
config_{std::move(config)},
|
||||
logger_{std::move(logger)},
|
||||
faultInjector_{*faultInjector} {}
|
||||
@ -172,7 +159,7 @@ class HgDatapackStore {
|
||||
const std::string& requestType);
|
||||
|
||||
sapling::SaplingNativeBackingStore store_;
|
||||
std::unique_ptr<HgDatapackStoreOptions> cppOptions_;
|
||||
std::unique_ptr<HgBackingStoreOptions> runtimeOptions_;
|
||||
std::shared_ptr<ReloadableConfig> config_;
|
||||
std::shared_ptr<StructuredLogger> logger_;
|
||||
FaultInjector& faultInjector_;
|
||||
|
@ -28,6 +28,7 @@ cpp_library(
|
||||
"//folly/logging:logging",
|
||||
],
|
||||
exported_deps = [
|
||||
":hg_backing_store_options",
|
||||
":hg_datapack_store",
|
||||
"//eden/fs:config",
|
||||
"//eden/fs/store:backing_store_interface",
|
||||
@ -143,6 +144,7 @@ cpp_library(
|
||||
"//folly/logging:logging",
|
||||
],
|
||||
exported_deps = [
|
||||
":hg_backing_store_options",
|
||||
"//eden/fs/model:model-fwd",
|
||||
"//eden/fs/telemetry:telemetry",
|
||||
"//eden/fs/utils:path",
|
||||
@ -154,6 +156,11 @@ cpp_library(
|
||||
],
|
||||
)
|
||||
|
||||
cpp_library(
|
||||
name = "hg_backing_store_options",
|
||||
headers = ["HgBackingStoreOptions.h"],
|
||||
)
|
||||
|
||||
cpp_library(
|
||||
name = "hg_proxy_hash",
|
||||
srcs = ["HgProxyHash.cpp"],
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "eden/fs/store/ObjectStore.h"
|
||||
#include "eden/fs/store/TreeCache.h"
|
||||
#include "eden/fs/store/hg/HgBackingStore.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/store/hg/HgQueuedBackingStore.h"
|
||||
#include "eden/fs/telemetry/EdenStats.h"
|
||||
#include "eden/fs/telemetry/NullStructuredLogger.h"
|
||||
@ -91,7 +92,7 @@ struct HgBackingStoreTest : TestRepo, ::testing::Test {
|
||||
repo.path(),
|
||||
edenConfig,
|
||||
localStore,
|
||||
std::make_unique<HgDatapackStore::CppOptions>(
|
||||
std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/false),
|
||||
stats.copy(),
|
||||
&faultInjector),
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "eden/fs/model/Tree.h"
|
||||
#include "eden/fs/store/MemoryLocalStore.h"
|
||||
#include "eden/fs/store/ObjectFetchContext.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/store/hg/HgDatapackStore.h"
|
||||
#include "eden/fs/store/hg/HgImportRequest.h"
|
||||
#include "eden/fs/store/hg/HgProxyHash.h"
|
||||
@ -51,8 +52,8 @@ HgDatapackStore::SaplingNativeOptions computeTestSaplingOptions() {
|
||||
return options;
|
||||
}
|
||||
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> computeTestCppOptions(
|
||||
std::unique_ptr<HgDatapackStore::CppOptions> options) {
|
||||
std::unique_ptr<HgBackingStoreOptions> computeTestOptions(
|
||||
std::unique_ptr<HgBackingStoreOptions> options) {
|
||||
options->ignoreFilteredPathsConfig =
|
||||
options->ignoreFilteredPathsConfig.value_or(false);
|
||||
return options;
|
||||
@ -73,7 +74,6 @@ struct HgDatapackStoreTestBase : TestRepo, ::testing::Test {
|
||||
EdenStatsPtr stats{makeRefPtr<EdenStats>()};
|
||||
|
||||
HgDatapackStore::SaplingNativeOptions options{computeTestSaplingOptions()};
|
||||
|
||||
std::shared_ptr<TestConfigSource> testConfigSource{
|
||||
std::make_shared<TestConfigSource>(ConfigSourceType::SystemConfig)};
|
||||
|
||||
@ -98,7 +98,7 @@ struct HgDatapackStoreTest : HgDatapackStoreTestBase {
|
||||
HgDatapackStore datapackStore{
|
||||
repo.path(),
|
||||
options,
|
||||
std::make_unique<HgDatapackStore::CppOptions>(
|
||||
std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/false),
|
||||
edenConfig,
|
||||
nullptr,
|
||||
@ -109,7 +109,7 @@ struct HgDatapackStoreTestIgnoreConfig : HgDatapackStoreTestBase {
|
||||
HgDatapackStore datapackStore{
|
||||
repo.path(),
|
||||
options,
|
||||
std::make_unique<HgDatapackStore::CppOptions>(
|
||||
std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/true),
|
||||
edenConfig,
|
||||
nullptr,
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "eden/fs/model/TestOps.h"
|
||||
#include "eden/fs/store/BackingStoreLogger.h"
|
||||
#include "eden/fs/store/MemoryLocalStore.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/store/hg/HgQueuedBackingStore.h"
|
||||
#include "eden/fs/telemetry/EdenStats.h"
|
||||
#include "eden/fs/telemetry/NullStructuredLogger.h"
|
||||
@ -62,7 +63,7 @@ struct HgQueuedBackingStoreTest : TestRepo, ::testing::Test {
|
||||
repo.path(),
|
||||
edenConfig,
|
||||
localStore,
|
||||
std::make_unique<HgDatapackStore::CppOptions>(
|
||||
std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/false),
|
||||
stats.copy(),
|
||||
&faultInjector)};
|
||||
|
@ -32,6 +32,7 @@ cpp_unittest(
|
||||
"//eden/fs/store:context",
|
||||
"//eden/fs/store:store",
|
||||
"//eden/fs/store/hg:hg_backing_store",
|
||||
"//eden/fs/store/hg:hg_backing_store_options",
|
||||
"//eden/fs/store/hg:hg_datapack_store",
|
||||
"//eden/fs/store/hg:hg_import_request",
|
||||
"//eden/fs/store/hg:hg_import_request_queue",
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "eden/fs/store/FilteredBackingStore.h"
|
||||
#include "eden/fs/store/MemoryLocalStore.h"
|
||||
#include "eden/fs/store/filter/HgSparseFilter.h"
|
||||
#include "eden/fs/store/hg/HgBackingStoreOptions.h"
|
||||
#include "eden/fs/store/hg/HgQueuedBackingStore.h"
|
||||
#include "eden/fs/telemetry/NullStructuredLogger.h"
|
||||
#include "eden/fs/testharness/FakeFilter.h"
|
||||
@ -121,7 +122,7 @@ struct HgFilteredBackingStoreTest : TestRepo, ::testing::Test {
|
||||
repo.path(),
|
||||
edenConfig,
|
||||
localStore,
|
||||
std::make_unique<HgDatapackStore::CppOptions>(
|
||||
std::make_unique<HgBackingStoreOptions>(
|
||||
/*ignoreFilteredPathsConfig=*/true),
|
||||
stats.copy(),
|
||||
&faultInjector)};
|
||||
|
Loading…
Reference in New Issue
Block a user