mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
store EdenServer* in HiveLogger
Reviewed By: xavierd Differential Revision: D29234427 fbshipit-source-id: 711f5eda4a8df9be0f31bc330fcfc54520e25400
This commit is contained in:
parent
9b4909d022
commit
09a16a72aa
@ -12,6 +12,7 @@
|
||||
|
||||
#include "eden/fs/config/EdenConfig.h"
|
||||
#include "eden/fs/model/git/TopLevelIgnores.h"
|
||||
#include "eden/fs/telemetry/IHiveLogger.h"
|
||||
#include "eden/fs/utils/Clock.h"
|
||||
#include "eden/fs/utils/FaultInjector.h"
|
||||
#include "eden/fs/utils/UnboundedQueueExecutor.h"
|
||||
@ -38,7 +39,6 @@ ServerState::ServerState(
|
||||
std::shared_ptr<Clock> clock,
|
||||
std::shared_ptr<ProcessNameCache> processNameCache,
|
||||
std::shared_ptr<StructuredLogger> structuredLogger,
|
||||
std::shared_ptr<IHiveLogger> hiveLogger,
|
||||
std::shared_ptr<const EdenConfig> edenConfig,
|
||||
std::shared_ptr<NfsServer> nfs,
|
||||
bool enableFaultDetection)
|
||||
@ -48,7 +48,7 @@ ServerState::ServerState(
|
||||
clock_{std::move(clock)},
|
||||
processNameCache_{std::move(processNameCache)},
|
||||
structuredLogger_{std::move(structuredLogger)},
|
||||
hiveLogger_{std::move(hiveLogger)},
|
||||
hiveLogger_{std::make_shared<NullHiveLogger>()},
|
||||
faultInjector_{std::make_unique<FaultInjector>(enableFaultDetection)},
|
||||
nfs_{std::move(nfs)},
|
||||
config_{edenConfig},
|
||||
|
@ -48,7 +48,6 @@ class ServerState {
|
||||
std::shared_ptr<Clock> clock,
|
||||
std::shared_ptr<ProcessNameCache> processNameCache,
|
||||
std::shared_ptr<StructuredLogger> structuredLogger,
|
||||
std::shared_ptr<IHiveLogger> hiveLogger,
|
||||
std::shared_ptr<const EdenConfig> edenConfig,
|
||||
std::shared_ptr<NfsServer> nfs,
|
||||
bool enableFaultInjection = false);
|
||||
@ -147,12 +146,20 @@ class ServerState {
|
||||
return structuredLogger_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite the default NullHiveLogger. This should only be called from
|
||||
* within EdenMain, after the server is created but before it is started.
|
||||
*/
|
||||
void setHiveLogger(std::shared_ptr<IHiveLogger> hiveLogger) {
|
||||
hiveLogger_ = std::move(hiveLogger);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a HiveLogger that can be used to send log events to external
|
||||
* long term storage for offline consumption.
|
||||
*/
|
||||
const std::shared_ptr<IHiveLogger>& getHiveLogger() const {
|
||||
return hiveLogger_;
|
||||
IHiveLogger* getHiveLogger() const {
|
||||
return hiveLogger_.get();
|
||||
}
|
||||
|
||||
FaultInjector& getFaultInjector() {
|
||||
|
@ -148,7 +148,8 @@ MetadataImporterFactory DefaultEdenMain::getMetadataImporterFactory() {
|
||||
|
||||
std::shared_ptr<IHiveLogger> DefaultEdenMain::getHiveLogger(
|
||||
SessionInfo /*sessionInfo*/,
|
||||
std::shared_ptr<EdenConfig> /*edenConfig*/) {
|
||||
std::shared_ptr<EdenConfig> /*edenConfig*/,
|
||||
EdenServer* /*edenServer*/) {
|
||||
return std::make_shared<NullHiveLogger>();
|
||||
}
|
||||
|
||||
@ -265,18 +266,21 @@ int runEdenMain(EdenMain&& main, int argc, char** argv) {
|
||||
auto sessionInfo = makeSessionInfo(
|
||||
identity, main.getLocalHostname(), main.getEdenfsVersion());
|
||||
|
||||
auto hiveLogger = main.getHiveLogger(sessionInfo, edenConfig);
|
||||
|
||||
server.emplace(
|
||||
std::move(originalCommandLine),
|
||||
std::move(identity),
|
||||
std::move(sessionInfo),
|
||||
sessionInfo,
|
||||
std::move(privHelper),
|
||||
std::move(edenConfig),
|
||||
edenConfig,
|
||||
main.getMetadataImporterFactory(),
|
||||
std::move(hiveLogger),
|
||||
main.getEdenfsVersion());
|
||||
|
||||
if (server.has_value()) {
|
||||
auto hiveLogger = main.getHiveLogger(
|
||||
std::move(sessionInfo), std::move(edenConfig), &(server.value()));
|
||||
server->getServerState()->setHiveLogger(std::move(hiveLogger));
|
||||
}
|
||||
|
||||
prepareFuture = server->prepare(startupLogger, !FLAGS_noWaitForMounts);
|
||||
} catch (const std::exception& ex) {
|
||||
auto startTimeInSeconds =
|
||||
|
@ -34,7 +34,8 @@ class EdenMain {
|
||||
virtual MetadataImporterFactory getMetadataImporterFactory() = 0;
|
||||
virtual std::shared_ptr<IHiveLogger> getHiveLogger(
|
||||
SessionInfo sessionInfo,
|
||||
std::shared_ptr<EdenConfig> edenConfig) = 0;
|
||||
std::shared_ptr<EdenConfig> edenConfig,
|
||||
EdenServer* edenServer) = 0;
|
||||
|
||||
void runServer(const EdenServer& server);
|
||||
};
|
||||
@ -52,7 +53,8 @@ class DefaultEdenMain : public EdenMain {
|
||||
virtual MetadataImporterFactory getMetadataImporterFactory() override;
|
||||
virtual std::shared_ptr<IHiveLogger> getHiveLogger(
|
||||
SessionInfo sessionInfo,
|
||||
std::shared_ptr<EdenConfig> edenConfig) override;
|
||||
std::shared_ptr<EdenConfig> edenConfig,
|
||||
EdenServer* edenServer) override;
|
||||
};
|
||||
|
||||
int runEdenMain(EdenMain&& main, int argc, char** argv);
|
||||
|
@ -56,7 +56,6 @@
|
||||
#include "eden/fs/store/hg/HgQueuedBackingStore.h"
|
||||
#include "eden/fs/store/hg/MetadataImporter.h"
|
||||
#include "eden/fs/telemetry/EdenStats.h"
|
||||
#include "eden/fs/telemetry/IHiveLogger.h"
|
||||
#include "eden/fs/telemetry/RequestMetricsScope.h"
|
||||
#include "eden/fs/telemetry/SessionInfo.h"
|
||||
#include "eden/fs/telemetry/StructuredLogger.h"
|
||||
@ -318,7 +317,6 @@ EdenServer::EdenServer(
|
||||
std::unique_ptr<PrivHelper> privHelper,
|
||||
std::shared_ptr<const EdenConfig> edenConfig,
|
||||
MetadataImporterFactory metadataImporterFactory,
|
||||
std::shared_ptr<IHiveLogger> hiveLogger,
|
||||
std::string version)
|
||||
: originalCommandLine_{std::move(originalCommandLine)},
|
||||
edenDir_{edenConfig->edenDir.getValue()},
|
||||
@ -337,7 +335,6 @@ EdenServer::EdenServer(
|
||||
std::make_shared<UnixClock>(),
|
||||
std::make_shared<ProcessNameCache>(),
|
||||
makeDefaultStructuredLogger(*edenConfig, std::move(sessionInfo)),
|
||||
std::move(hiveLogger),
|
||||
edenConfig,
|
||||
#ifndef _WIN32
|
||||
edenConfig->enableNfsServer.getValue()
|
||||
|
@ -63,7 +63,6 @@ namespace eden {
|
||||
|
||||
class BackingStore;
|
||||
class HgQueuedBackingStore;
|
||||
class IHiveLogger;
|
||||
class BlobCache;
|
||||
class TreeCache;
|
||||
class Dirstate;
|
||||
@ -115,7 +114,6 @@ class EdenServer : private TakeoverHandler {
|
||||
std::unique_ptr<PrivHelper> privHelper,
|
||||
std::shared_ptr<const EdenConfig> edenConfig,
|
||||
MetadataImporterFactory metadataImporterFactory,
|
||||
std::shared_ptr<IHiveLogger> hiveLogger,
|
||||
std::string version = "");
|
||||
|
||||
virtual ~EdenServer();
|
||||
|
@ -13,14 +13,18 @@
|
||||
namespace facebook::eden {
|
||||
|
||||
class EdenConfig;
|
||||
class EdenServer;
|
||||
|
||||
// TODO: Deprecate ScribeLogger and rename this class ScribeLogger.
|
||||
class IHiveLogger {
|
||||
public:
|
||||
IHiveLogger(
|
||||
SessionInfo sessionInfo,
|
||||
std::shared_ptr<const EdenConfig> edenConfig)
|
||||
: sessionInfo_{std::move(sessionInfo)}, reloadableConfig_{edenConfig} {}
|
||||
std::shared_ptr<const EdenConfig> edenConfig,
|
||||
EdenServer* edenServer)
|
||||
: sessionInfo_{std::move(sessionInfo)},
|
||||
reloadableConfig_{edenConfig},
|
||||
edenServer_{edenServer} {}
|
||||
virtual ~IHiveLogger() = default;
|
||||
|
||||
/**
|
||||
@ -32,11 +36,12 @@ class IHiveLogger {
|
||||
protected:
|
||||
SessionInfo sessionInfo_;
|
||||
ReloadableConfig reloadableConfig_;
|
||||
EdenServer* edenServer_;
|
||||
};
|
||||
|
||||
class NullHiveLogger : public IHiveLogger {
|
||||
public:
|
||||
NullHiveLogger() : IHiveLogger{SessionInfo{}, {}} {}
|
||||
NullHiveLogger() : IHiveLogger{SessionInfo{}, {}, nullptr} {}
|
||||
|
||||
std::unique_ptr<IHiveLogger> create() override {
|
||||
return std::make_unique<NullHiveLogger>();
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include "eden/fs/store/LocalStore.h"
|
||||
#include "eden/fs/store/MemoryLocalStore.h"
|
||||
#include "eden/fs/store/ObjectStore.h"
|
||||
#include "eden/fs/telemetry/IHiveLogger.h"
|
||||
#include "eden/fs/telemetry/NullStructuredLogger.h"
|
||||
#include "eden/fs/testharness/FakeBackingStore.h"
|
||||
#include "eden/fs/testharness/FakeClock.h"
|
||||
@ -114,7 +113,6 @@ TestMount::TestMount()
|
||||
clock_,
|
||||
make_shared<ProcessNameCache>(),
|
||||
make_shared<NullStructuredLogger>(),
|
||||
make_shared<NullHiveLogger>(),
|
||||
edenConfig_,
|
||||
nullptr,
|
||||
/*enableFaultInjection=*/true)};
|
||||
|
@ -77,7 +77,6 @@ unique_ptr<EdenServer> TestServer::createServer(AbsolutePathPiece tmpDir) {
|
||||
std::move(privHelper),
|
||||
config,
|
||||
MetadataImporter::getMetadataImporterFactory<DefaultMetadataImporter>(),
|
||||
std::make_shared<NullHiveLogger>(),
|
||||
"test server");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user