From e30a42decc62e87960e3872548e45040b665e399 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Mar 2023 11:02:51 +0200 Subject: ignore generated CMake files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 07360f5a2..7fe7d21b6 100644 --- a/.gitignore +++ b/.gitignore @@ -228,6 +228,8 @@ tags # generated build files makefile /vsxmake*/ +CMakefiles/ +CMake* # ClangD cache directory .cache -- cgit v1.2.3 From ab77e5b092703a19cce5c480f38b39236625b199 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Mar 2023 15:31:11 +0200 Subject: minor: FormatResponse -> FormatHttpResponse --- zen/cmds/projectstore.cpp | 24 ++++++++++++------------ zen/cmds/rpcreplay.cpp | 8 ++++---- zen/zen.cpp | 2 +- zen/zen.h | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/zen/cmds/projectstore.cpp b/zen/cmds/projectstore.cpp index e12b85edc..97c815241 100644 --- a/zen/cmds/projectstore.cpp +++ b/zen/cmds/projectstore.cpp @@ -207,7 +207,7 @@ CreateProjectCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** a Response = Session.Post(); } - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -275,7 +275,7 @@ CreateOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg Response = Session.Post(); } - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -424,13 +424,13 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg Response = Session.Post(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } } else if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } else if (m_ZenClean) @@ -439,13 +439,13 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg Response = Session.Delete(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } Response = Session.Post(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } } @@ -551,7 +551,7 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg ZEN_CONSOLE("Saving oplog '{}/{}' from '{}' to {}", m_ProjectName, m_OplogName, m_HostName, TargetDescription); cpr::Response Response = Session.Post(); - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -685,13 +685,13 @@ ImportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg Response = Session.Post(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } } else if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } else if (m_ZenClean) @@ -700,13 +700,13 @@ ImportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg Response = Session.Delete(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } Response = Session.Post(); if (!zen::IsHttpSuccessCode(Response.status_code)) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } } @@ -778,6 +778,6 @@ ImportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg ZEN_CONSOLE("Loading oplog '{}/{}' from '{}' to {}", m_ProjectName, m_OplogName, SourceDescription, m_HostName); Response = Session.Post(); - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } diff --git a/zen/cmds/rpcreplay.cpp b/zen/cmds/rpcreplay.cpp index 90edb949d..366b67104 100644 --- a/zen/cmds/rpcreplay.cpp +++ b/zen/cmds/rpcreplay.cpp @@ -54,7 +54,7 @@ RpcStartRecordingCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char Session.SetUrl(fmt::format("{}/z$/exec$/start-recording"sv, m_HostName)); Session.SetParameters({{"path", m_RecordingPath}}); cpr::Response Response = Session.Post(); - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -81,7 +81,7 @@ RpcStopRecordingCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char* cpr::Session Session; Session.SetUrl(fmt::format("{}/z$/exec$/stop-recording"sv, m_HostName)); cpr::Response Response = Session.Post(); - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -177,7 +177,7 @@ RpcReplayCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) Session.SetUrl(fmt::format("{}/z$/exec$/replay-recording"sv, m_HostName)); Session.SetParameters({{"path", m_RecordingPath}, {"thread-count", fmt::format("{}", m_ThreadCount)}}); cpr::Response Response = Session.Post(); - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); return GetReturnCode(Response); } @@ -367,7 +367,7 @@ RpcReplayCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) if (Response.error || !(IsHttpSuccessCode(Response.status_code) || Response.status_code == gsl::narrow(HttpResponseCode::NotFound))) { - ZEN_CONSOLE("{}", FormatResponse(Response)); + ZEN_CONSOLE("{}", FormatHttpResponse(Response)); break; } BytesReceived.fetch_add(Response.downloaded_bytes); diff --git a/zen/zen.cpp b/zen/zen.cpp index 754b1f0a6..a085af2c0 100644 --- a/zen/zen.cpp +++ b/zen/zen.cpp @@ -93,7 +93,7 @@ ZenCmdBase::ParseOptions(int argc, char** argv) } std::string -ZenCmdBase::FormatResponse(const cpr::Response& Response) +ZenCmdBase::FormatHttpResponse(const cpr::Response& Response) { if (Response.error.code != cpr::ErrorCode::OK) { diff --git a/zen/zen.h b/zen/zen.h index d786b3148..ddf7736c7 100644 --- a/zen/zen.h +++ b/zen/zen.h @@ -33,6 +33,6 @@ public: virtual cxxopts::Options& Options() = 0; bool ParseOptions(int argc, char** argv); - static std::string FormatResponse(const cpr::Response& Response); + static std::string FormatHttpResponse(const cpr::Response& Response); static int GetReturnCode(const cpr::Response& Response); }; -- cgit v1.2.3 From bd3bb822f9c2876393bd61b3c3ccc9bb73221694 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Mar 2023 15:31:46 +0200 Subject: zen: sorted commands to reduce potential for merge conflicts --- zen/zen.cpp | 91 +++++++++++++++++++++++++------------------------------------ 1 file changed, 37 insertions(+), 54 deletions(-) diff --git a/zen/zen.cpp b/zen/zen.cpp index a085af2c0..3dc10a99b 100644 --- a/zen/zen.cpp +++ b/zen/zen.cpp @@ -40,38 +40,18 @@ ZEN_THIRD_PARTY_INCLUDES_END # include #endif -////////////////////////////////////////////////////////////////////////// - -class TemplateCommand : public ZenCmdBase -{ -public: - TemplateCommand() { m_Options.add_options()("r,root", "Root directory for CAS pool", cxxopts::value(m_RootDirectory)); } - - virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override - { - ZEN_UNUSED(GlobalOptions, argc, argv); - return 0; - } - - virtual cxxopts::Options& Options() override { return m_Options; } - -private: - cxxopts::Options m_Options{"template", "EDIT THIS COMMAND DESCRIPTION"}; - std::string m_RootDirectory; -}; - -////////////////////////////////////////////////////////////////////////// - bool ZenCmdBase::ParseOptions(int argc, char** argv) { cxxopts::Options& CmdOptions = Options(); cxxopts::ParseResult Result = CmdOptions.parse(argc, argv); + if (Result.count("help")) { printf("%s\n", CmdOptions.help().c_str()); return false; } + if (!Result.unmatched().empty()) { zen::ExtendableStringBuilder<64> StringBuilder; @@ -86,6 +66,7 @@ ZenCmdBase::ParseOptions(int argc, char** argv) StringBuilder.Append('"'); First = false; } + throw cxxopts::OptionParseException(fmt::format("Invalid arguments: {}", StringBuilder.ToView())); } @@ -132,6 +113,7 @@ ZenCmdBase::FormatHttpResponse(const cpr::Response& Response) { return std::string(ResponseString); } + return fmt::format("{}: {}", ResponseString, Content); } @@ -204,30 +186,30 @@ main(int argc, char** argv) auto _ = zen::MakeGuard([] { spdlog::shutdown(); }); - HashCommand HashCmd; + CacheInfoCommand CacheInfoCmd; CopyCommand CopyCmd; + CreateOplogCommand CreateOplogCmd; + CreateProjectCommand CreateProjectCmd; DedupCommand DedupCmd; - DropCommand DropCmd; - StatusCommand StatusCmd; - TopCommand TopCmd; - PrintCommand PrintCmd; - PrintPackageCommand PrintPkgCmd; - PsCommand PsCmd; - UpCommand UpCmd; DownCommand DownCmd; - ExportOplogCommand ExportOplogCmd; - ImportOplogCommand ImportOplogCmd; - VersionCommand VersionCmd; - CacheInfoCommand CacheInfoCmd; + DropCommand DropCmd; DropProjectCommand ProjectDropCmd; - ProjectInfoCommand ProjectInfoCmd; - CreateProjectCommand CreateProjectCmd; - CreateOplogCommand CreateOplogCmd; + ExportOplogCommand ExportOplogCmd; GcCommand GcCmd; GcStatusCommand GcStatusCmd; + HashCommand HashCmd; + ImportOplogCommand ImportOplogCmd; + PrintCommand PrintCmd; + PrintPackageCommand PrintPkgCmd; + ProjectInfoCommand ProjectInfoCmd; + PsCommand PsCmd; RpcReplayCommand RpcReplayCmd; RpcStartRecordingCommand RpcStartRecordingCmd; RpcStopRecordingCommand RpcStopRecordingCmd; + StatusCommand StatusCmd; + TopCommand TopCmd; + UpCommand UpCmd; + VersionCommand VersionCmd; #if ZEN_WITH_TESTS RunTestsCommand RunTestsCmd; @@ -241,30 +223,30 @@ main(int argc, char** argv) } Commands[] = { // clang-format off // {"chunk", &ChunkCmd, "Perform chunking"}, + {"cache-info", &CacheInfoCmd, "Info on cache, namespace or bucket"}, {"copy", &CopyCmd, "Copy file(s)"}, {"dedup", &DedupCmd, "Dedup files"}, + {"down", &DownCmd, "Bring zen server down"}, {"drop", &DropCmd, "Drop cache namespace or bucket"}, + {"gc-status", &GcStatusCmd, "Garbage collect zen storage status check"}, + {"gc", &GcCmd, "Garbage collect zen storage"}, {"hash", &HashCmd, "Compute file hashes"}, + {"oplog-create", &CreateOplogCmd, "Create a project oplog"}, + {"oplog-export", &ExportOplogCmd, "Export project store oplog"}, + {"oplog-import", &ImportOplogCmd, "Import project store oplog"}, {"print", &PrintCmd, "Print compact binary object"}, {"printpackage", &PrintPkgCmd, "Print compact binary package"}, - {"status", &StatusCmd, "Show zen status"}, - {"ps", &PsCmd, "Enumerate running zen server instances"}, - {"top", &TopCmd, "Monitor zen server activity"}, - {"up", &UpCmd, "Bring zen server up"}, - {"down", &DownCmd, "Bring zen server down"}, - {"version", &VersionCmd, "Get zen server version"}, - {"cache-info", &CacheInfoCmd, "Info on cache, namespace or bucket"}, + {"project-create", &CreateProjectCmd, "Create a project"}, {"project-drop", &ProjectDropCmd, "Drop project or project oplog"}, {"project-info", &ProjectInfoCmd, "Info on project or project oplog"}, - {"project-create", &CreateProjectCmd, "Create a project"}, - {"oplog-create", &CreateOplogCmd, "Create a project oplog"}, - {"oplog-export", &ExportOplogCmd, "Export project store oplog"}, - {"oplog-import", &ImportOplogCmd, "Import project store oplog"}, - {"gc", &GcCmd, "Garbage collect zen storage"}, - {"gc-status", &GcStatusCmd, "Garbage collect zen storage status check"}, + {"ps", &PsCmd, "Enumerate running zen server instances"}, + {"rpc-record-replay", &RpcReplayCmd, "Stops recording of cache rpc requests on a host"}, {"rpc-record-start", &RpcStartRecordingCmd, "Replays a previously recorded session of rpc requests"}, {"rpc-record-stop", &RpcStopRecordingCmd, "Starts recording of cache rpc requests on a host"}, - {"rpc-record-replay", &RpcReplayCmd, "Stops recording of cache rpc requests on a host"}, + {"status", &StatusCmd, "Show zen status"}, + {"top", &TopCmd, "Monitor zen server activity"}, + {"up", &UpCmd, "Bring zen server up"}, + {"version", &VersionCmd, "Get zen server version"}, #if ZEN_WITH_TESTS {"runtests", &RunTestsCmd, "Run zen tests"}, #endif @@ -354,9 +336,10 @@ main(int argc, char** argv) std::string SubCommand = ""; cxxopts::Options Options("zen", "Zen management tool"); - Options.add_options()("d, debug", "Enable debugging", cxxopts::value(GlobalOptions.IsDebug)); + + Options.add_options()("d, debug", "Enable debugging", cxxopts::value(GlobalOptions.IsDebug)); Options.add_options()("v, verbose", "Enable verbose logging", cxxopts::value(GlobalOptions.IsVerbose)); - Options.add_options()("help", "Show command line help"); + Options.add_options()("help", "Show command line help"); Options.add_options()("c, command", "Sub command", cxxopts::value(SubCommand)); Options.parse_positional({"command"}); @@ -414,7 +397,7 @@ main(int argc, char** argv) { std::string HelpMessage = Options.help(); - printf("Error parsing snapshot program arguments: %s\n\n%s", Ex.what(), HelpMessage.c_str()); + printf("Error parsing program arguments: %s\n\n%s", Ex.what(), HelpMessage.c_str()); return 9; } -- cgit v1.2.3 From 88fd60a1451e31b764f189a2a95c9c7a4aa79eb3 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Mar 2023 16:29:13 +0200 Subject: minor: Namnspace -> namespace --- zen/cmds/cache.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zen/cmds/cache.cpp b/zen/cmds/cache.cpp index 2407f5f55..b9e10cbf8 100644 --- a/zen/cmds/cache.cpp +++ b/zen/cmds/cache.cpp @@ -17,7 +17,7 @@ DropCommand::DropCommand() { m_Options.add_options()("h,help", "Print help"); m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), ""); - m_Options.add_option("", "n", "namespace", "Namnspace name", cxxopts::value(m_NamespaceName), ""); + m_Options.add_option("", "n", "namespace", "Namespace name", cxxopts::value(m_NamespaceName), ""); m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), ""); m_Options.parse_positional({"namespace", "bucket"}); } @@ -76,7 +76,7 @@ CacheInfoCommand::CacheInfoCommand() { m_Options.add_options()("h,help", "Print help"); m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), ""); - m_Options.add_option("", "n", "namespace", "Namnspace name", cxxopts::value(m_NamespaceName), ""); + m_Options.add_option("", "n", "namespace", "Namespace name", cxxopts::value(m_NamespaceName), ""); m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), ""); m_Options.parse_positional({"namespace", "bucket"}); } -- cgit v1.2.3 From a20fa9c5f18b58b4a009a24aa6a9a5a04f129b9e Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Mon, 3 Apr 2023 14:14:42 +0200 Subject: #minor - don't log "sentry initialized" if sentry is explicitly disabled. --- zenserver/zenserver.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index 6a9e19e50..e3b364ea1 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -964,13 +964,16 @@ ZenEntryPoint::Run() InitializeLogging(ServerOptions); #if ZEN_USE_SENTRY - if (SentryErrorCode == 0) + if (m_ServerOptions.NoSentry == false) { - ZEN_INFO("sentry initialized"); - } - else - { - ZEN_WARN("sentry_init returned failure! (error code: {})", SentryErrorCode); + if (SentryErrorCode == 0) + { + ZEN_INFO("sentry initialized"); + } + else + { + ZEN_WARN("sentry_init returned failure! (error code: {})", SentryErrorCode); + } } #endif -- cgit v1.2.3