From e724bb7018a482640c4f194f88b554af2c59d76e Mon Sep 17 00:00:00 2001
From: Mark Benvenuto <mark.benvenuto@mongodb.com>
Date: Wed, 20 Sep 2017 11:50:02 -0400
Subject: [PATCH] SERVER-30857 Support unknown Linux distributions

---
 src/mongo/rpc/metadata/client_metadata.cpp | 6 ------
 src/mongo/util/processinfo_linux.cpp       | 9 ++++++---
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/mongo/rpc/metadata/client_metadata.cpp b/src/mongo/rpc/metadata/client_metadata.cpp
index 845a315dd74..a959a4e31e9 100644
--- a/src/mongo/rpc/metadata/client_metadata.cpp
+++ b/src/mongo/rpc/metadata/client_metadata.cpp
@@ -302,9 +302,6 @@ void ClientMetadata::serializePrivate(StringData driverName,
                                       StringData osArchitecture,
                                       StringData osVersion,
                                       BSONObjBuilder* builder) {
-    invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() &&
-              !osArchitecture.empty() && !osVersion.empty());
-
     BSONObjBuilder metaObjBuilder(builder->subobjStart(kMetadataDocumentName));
 
     {
@@ -347,9 +344,6 @@ Status ClientMetadata::serializePrivate(StringData driverName,
                                         StringData osVersion,
                                         StringData appName,
                                         BSONObjBuilder* builder) {
-    invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() &&
-              !osArchitecture.empty() && !osVersion.empty());
-
     if (appName.size() > kMaxApplicationNameByteLength) {
         return Status(ErrorCodes::ClientMetadataAppNameTooLarge,
                       str::stream() << "The '" << kApplication << "." << kName
diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp
index c3debf377bd..c2813b026b0 100644
--- a/src/mongo/util/processinfo_linux.cpp
+++ b/src/mongo/util/processinfo_linux.cpp
@@ -376,10 +376,13 @@ class LinuxSysHelper {
             if ((nl = name.find('\n', nl)) != string::npos)
                 // stop at first newline
                 name.erase(nl);
-            // no standard format for name and version.  use kernel version
-            version = "Kernel ";
-            version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease");
+        } else {
+            name = "unknown";
         }
+
+        // There is no standard format for name and version so use the kernel version.
+        version = "Kernel ";
+        version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease");
     }
 
     /**
