diff --git a/eden/fs/config/EdenConfig.h b/eden/fs/config/EdenConfig.h index 9aa97eb2b6..fdb8ca1712 100644 --- a/eden/fs/config/EdenConfig.h +++ b/eden/fs/config/EdenConfig.h @@ -17,6 +17,7 @@ #include #include +#include "common/rust/shed/hostcaps/hostcaps.h" #include "eden/fs/config/ConfigSetting.h" #include "eden/fs/config/FileChangeMonitor.h" #include "eden/fs/config/MountProtocol.h" @@ -762,6 +763,24 @@ class EdenConfig : private ConfigSettingManager { "clone:default-mount-protocol", folly::kIsWindows ? MountProtocol::PRJFS : MountProtocol::FUSE, this}; + + // [facebook] + // Facebook internal + + /** + * (Facebook Internal) Determines if EdenFS should use ServiceRouter. + */ +#ifdef EDEN_HAVE_SERVICEROUTER + ConfigSetting enableServiceRouter{ + "facebook:enable-service-router", + fb_has_servicerouter(), + this}; +#else + ConfigSetting enableServiceRouter{ + "facebook:enable-service-router", + false, + this}; +#endif }; } // namespace facebook::eden diff --git a/eden/fs/config/FieldConverter.h b/eden/fs/config/FieldConverter.h index 01a2b547b5..962cdda635 100644 --- a/eden/fs/config/FieldConverter.h +++ b/eden/fs/config/FieldConverter.h @@ -7,7 +7,6 @@ #pragma once -#include #include #include #include @@ -15,6 +14,7 @@ #include #include +#include #include #include diff --git a/eden/fs/service/EdenMain.cpp b/eden/fs/service/EdenMain.cpp index e240c0d5fa..bffe5730c5 100644 --- a/eden/fs/service/EdenMain.cpp +++ b/eden/fs/service/EdenMain.cpp @@ -141,7 +141,8 @@ void DefaultEdenMain::prepare(const EdenServer& /*server*/) { fb303::registerFollyLoggingOptionHandlers(); } -MetadataImporterFactory DefaultEdenMain::getMetadataImporterFactory() { +MetadataImporterFactory DefaultEdenMain::getMetadataImporterFactory( + std::shared_ptr /*edenConfig*/) { return MetadataImporter::getMetadataImporterFactory< DefaultMetadataImporter>(); } @@ -272,6 +273,7 @@ int runEdenMain(EdenMain&& main, int argc, char** argv) { identity, main.getLocalHostname(), main.getEdenfsVersion()); auto hiveLogger = main.getHiveLogger(sessionInfo, edenConfig); + auto metadataImporter = main.getMetadataImporterFactory(edenConfig); server.emplace( std::move(originalCommandLine), @@ -279,7 +281,7 @@ int runEdenMain(EdenMain&& main, int argc, char** argv) { std::move(sessionInfo), std::move(privHelper), std::move(edenConfig), - main.getMetadataImporterFactory(), + std::move(metadataImporter), main.getActivityRecorderFactory(), std::move(hiveLogger), main.getEdenfsVersion()); diff --git a/eden/fs/service/EdenMain.h b/eden/fs/service/EdenMain.h index e4df69268d..a74a7d8428 100644 --- a/eden/fs/service/EdenMain.h +++ b/eden/fs/service/EdenMain.h @@ -33,7 +33,8 @@ class EdenMain { virtual void didFollyInit() = 0; virtual void prepare(const EdenServer& server) = 0; virtual void cleanup() = 0; - virtual MetadataImporterFactory getMetadataImporterFactory() = 0; + virtual MetadataImporterFactory getMetadataImporterFactory( + std::shared_ptr edenConfig) = 0; virtual ActivityRecorderFactory getActivityRecorderFactory() = 0; virtual std::shared_ptr getHiveLogger( SessionInfo sessionInfo, @@ -53,7 +54,8 @@ class DefaultEdenMain : public EdenMain { virtual void didFollyInit() override; virtual void prepare(const EdenServer& server) override; virtual void cleanup() override {} - virtual MetadataImporterFactory getMetadataImporterFactory() override; + virtual MetadataImporterFactory getMetadataImporterFactory( + std::shared_ptr edenConfig) override; virtual ActivityRecorderFactory getActivityRecorderFactory() override; virtual std::shared_ptr getHiveLogger( SessionInfo sessionInfo, diff --git a/eden/fs/service/EdenServiceHandler.cpp b/eden/fs/service/EdenServiceHandler.cpp index da0bd874f2..a2300abcde 100644 --- a/eden/fs/service/EdenServiceHandler.cpp +++ b/eden/fs/service/EdenServiceHandler.cpp @@ -380,7 +380,8 @@ EdenServiceHandler::EdenServiceHandler( } #ifdef EDEN_HAVE_USAGE_SERVICE spServiceEndpoint_ = std::make_unique( - server_->getServerState()->getThreadPool()); + server_->getServerState()->getThreadPool(), + server_->getServerState()->getEdenConfig()); #endif }