summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2020-03-22 22:32:49 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-03-23 13:31:33 +0000
commit2e58eb2e8a79c4fb4d12465616fa89ab498eb05c (patch)
tree73bba1b90f30d2446c9c6390f3215de501669318 /src/mongo/db
parent5846d4b66cf0adb154dbe89c696a750bc0a1082c (diff)
downloadmongo-2e58eb2e8a79c4fb4d12465616fa89ab498eb05c.tar.gz
SERVER-46765 fix '--version' & '--sysinfo', which use kPlain logging
This reverts commit 79a8452b2a813b796059e5eab6c18f685283ce08. with new spot fix: printCommandLineOpts when sending to log
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/db.cpp2
-rw-r--r--src/mongo/db/log_process_details.cpp34
-rw-r--r--src/mongo/db/log_process_details.h7
-rw-r--r--src/mongo/db/mongod_options.cpp35
-rw-r--r--src/mongo/db/server_options_server_helpers.cpp12
-rw-r--r--src/mongo/db/server_options_server_helpers.h7
6 files changed, 58 insertions, 39 deletions
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp
index b5588f4bbfe..2742b0666b0 100644
--- a/src/mongo/db/db.cpp
+++ b/src/mongo/db/db.cpp
@@ -326,7 +326,7 @@ ExitCode _initAndListen(ServiceContext* serviceContext, int listenPort) {
VersionInfoInterface::instance().logTargetMinOS();
#endif
- logProcessDetails();
+ logProcessDetails(nullptr);
serviceContext->setServiceEntryPoint(std::make_unique<ServiceEntryPointMongod>(serviceContext));
diff --git a/src/mongo/db/log_process_details.cpp b/src/mongo/db/log_process_details.cpp
index 9d43247991a..f63401df6fd 100644
--- a/src/mongo/db/log_process_details.cpp
+++ b/src/mongo/db/log_process_details.cpp
@@ -33,6 +33,11 @@
#include "mongo/db/log_process_details.h"
+#include <ostream>
+
+#include "mongo/bson/bsonobj.h"
+#include "mongo/bson/bsonobjbuilder.h"
+#include "mongo/bson/json.h"
#include "mongo/db/repl/repl_set_config.h"
#include "mongo/db/repl/replication_coordinator.h"
#include "mongo/db/server_options.h"
@@ -44,26 +49,35 @@
namespace mongo {
+namespace {
+
bool is32bit() {
return (sizeof(int*) == 4);
}
-void logProcessDetails() {
- auto&& vii = VersionInfoInterface::instance();
- vii.logBuildInfo();
-
- ProcessInfo p;
- LOGV2(
- 51765, "Operating system", "name"_attr = p.getOsName(), "version"_attr = p.getOsVersion());
+} // namespace
+void logProcessDetails(std::ostream* os) {
+ auto&& vii = VersionInfoInterface::instance();
if (ProcessInfo::getMemSizeMB() < ProcessInfo::getSystemMemSizeMB()) {
LOGV2_WARNING(20720,
"Available memory is less than system memory",
"availableMemSizeMB"_attr = ProcessInfo::getMemSizeMB(),
"systemMemSizeMB"_attr = ProcessInfo::getSystemMemSizeMB());
}
-
- printCommandLineOpts();
+ auto osInfo = BSONObjBuilder()
+ .append("name", ProcessInfo::getOsName())
+ .append("version", ProcessInfo::getOsVersion())
+ .obj();
+ vii.logBuildInfo(os);
+ if (os) {
+ *os << format(FMT_STRING("Operating System: {}"),
+ tojson(osInfo, ExtendedRelaxedV2_0_0, true))
+ << std::endl;
+ } else {
+ LOGV2(51765, "Operating System", "os"_attr = osInfo);
+ }
+ printCommandLineOpts(os);
}
void logProcessDetailsForLogRotate(ServiceContext* serviceContext) {
@@ -89,7 +103,7 @@ void logProcessDetailsForLogRotate(ServiceContext* serviceContext) {
}
}
- logProcessDetails();
+ logProcessDetails(nullptr);
}
} // namespace mongo
diff --git a/src/mongo/db/log_process_details.h b/src/mongo/db/log_process_details.h
index d74fcc5fe52..677fea672bb 100644
--- a/src/mongo/db/log_process_details.h
+++ b/src/mongo/db/log_process_details.h
@@ -29,14 +29,17 @@
#pragma once
+#include <iosfwd>
+
namespace mongo {
class ServiceContext;
/**
- * Writes useful information about the running process to the diagnostic log on startup.
+ * Writes useful information about the running process.
+ * If `os` is nonnull, print to it, else to LOGV2.
*/
-void logProcessDetails();
+void logProcessDetails(std::ostream* os);
/**
* Writes useful information about the running process to diagnostic log
diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp
index c1926b20762..78a8befe022 100644
--- a/src/mongo/db/mongod_options.cpp
+++ b/src/mongo/db/mongod_options.cpp
@@ -101,23 +101,20 @@ void printMongodHelp(const moe::OptionSection& options) {
};
namespace {
-void sysRuntimeInfo() {
+
+void appendSysInfo(BSONObjBuilder* obj) {
+ auto o = BSONObjBuilder(obj->subobjStart("sysinfo"));
#if defined(_SC_PAGE_SIZE)
- LOGV2(20873,
- " page size: {int_sysconf_SC_PAGE_SIZE}",
- "int_sysconf_SC_PAGE_SIZE"_attr = (int)sysconf(_SC_PAGE_SIZE));
+ o.append("_SC_PAGE_SIZE", (long long)sysconf(_SC_PAGE_SIZE));
#endif
#if defined(_SC_PHYS_PAGES)
- LOGV2(20874,
- " _SC_PHYS_PAGES: {sysconf_SC_PHYS_PAGES}",
- "sysconf_SC_PHYS_PAGES"_attr = sysconf(_SC_PHYS_PAGES));
+ o.append("_SC_PHYS_PAGES", (long long)sysconf(_SC_PHYS_PAGES));
#endif
#if defined(_SC_AVPHYS_PAGES)
- LOGV2(20875,
- " _SC_AVPHYS_PAGES: {sysconf_SC_AVPHYS_PAGES}",
- "sysconf_SC_AVPHYS_PAGES"_attr = sysconf(_SC_AVPHYS_PAGES));
+ o.append("_SC_AVPHYS_PAGES", (long long)sysconf(_SC_AVPHYS_PAGES));
#endif
}
+
} // namespace
bool handlePreValidationMongodOptions(const moe::Environment& params,
@@ -126,24 +123,16 @@ bool handlePreValidationMongodOptions(const moe::Environment& params,
printMongodHelp(moe::startupOptions);
return false;
}
-
- auto setPlainLogFormat = []() {
- auto& globalDomain = logv2::LogManager::global().getGlobalDomainInternal();
- logv2::LogDomainGlobal::ConfigurationOptions config = globalDomain.config();
- config.format = logv2::LogFormat::kPlain;
- invariant(globalDomain.configure(config).isOK());
- };
-
if (params.count("version") && params["version"].as<bool>() == true) {
- setPlainLogFormat();
auto&& vii = VersionInfoInterface::instance();
- LOGV2(20876, "{mongodVersion_vii}", "mongodVersion_vii"_attr = mongodVersion(vii));
- vii.logBuildInfo();
+ std::cout << mongodVersion(vii) << std::endl;
+ vii.logBuildInfo(&std::cout);
return false;
}
if (params.count("sysinfo") && params["sysinfo"].as<bool>() == true) {
- setPlainLogFormat();
- sysRuntimeInfo();
+ BSONObjBuilder obj;
+ appendSysInfo(&obj);
+ std::cout << tojson(obj.done(), ExtendedRelaxedV2_0_0, true) << std::endl;
return false;
}
diff --git a/src/mongo/db/server_options_server_helpers.cpp b/src/mongo/db/server_options_server_helpers.cpp
index 878fa85a40f..0d237dfe7bd 100644
--- a/src/mongo/db/server_options_server_helpers.cpp
+++ b/src/mongo/db/server_options_server_helpers.cpp
@@ -37,10 +37,12 @@
#include <boost/algorithm/string/trim.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/operations.hpp>
+#include <fmt/format.h>
#include <ios>
#include <iostream>
#include "mongo/base/status.h"
+#include "mongo/bson/json.h"
#include "mongo/bson/util/builder.h"
#include "mongo/config.h"
#include "mongo/db/server_options.h"
@@ -113,8 +115,14 @@ Status setParsedOpts(const moe::Environment& params) {
}
} // namespace
-void printCommandLineOpts() {
- LOGV2(21951, "Options set by command line", "options"_attr = serverGlobalParams.parsedOpts);
+void printCommandLineOpts(std::ostream* os) {
+ if (os) {
+ *os << format(FMT_STRING("Options set by command line: {}"),
+ tojson(serverGlobalParams.parsedOpts, ExtendedRelaxedV2_0_0, true))
+ << std::endl;
+ } else {
+ LOGV2(21951, "Options set by command line", "options"_attr = serverGlobalParams.parsedOpts);
+ }
}
Status validateServerOptions(const moe::Environment& params) {
diff --git a/src/mongo/db/server_options_server_helpers.h b/src/mongo/db/server_options_server_helpers.h
index 51a59315554..5a243ab5dee 100644
--- a/src/mongo/db/server_options_server_helpers.h
+++ b/src/mongo/db/server_options_server_helpers.h
@@ -29,6 +29,8 @@
#pragma once
+#include <iosfwd>
+
#include "mongo/base/status.h"
#include "mongo/util/options_parser/environment.h"
#include "mongo/util/options_parser/option_section.h"
@@ -66,6 +68,9 @@ Status setupServerOptions(const std::vector<std::string>& args);
*/
Status storeServerOptions(const optionenvironment::Environment& params);
-void printCommandLineOpts();
+/**
+ * Write to `os`, or to LOGV2 if null.
+ */
+void printCommandLineOpts(std::ostream* os);
} // namespace mongo