summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2023-04-17 14:19:24 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-28 04:22:03 +0000
commit8c9ab2dc711df435840237c90fb04d6ff3cb8b71 (patch)
tree8bc20c747af739641a4005ff4be13b9509970813
parente0d9ea8507cb8aaad00f2aedc1a60e3a88deafcf (diff)
downloadmongo-8c9ab2dc711df435840237c90fb04d6ff3cb8b71.tar.gz
SERVER-76063 Always report FreeMonitoring as disabled
(cherry picked from commit 70d26d65a1e55e4da104f4f150bdc8b6d2ae5b65)
-rw-r--r--jstests/free_mon/free_mon_announce.js11
-rw-r--r--jstests/free_mon/free_mon_register_cmd.js10
-rw-r--r--jstests/free_mon/libs/free_mon.js7
-rw-r--r--src/mongo/db/free_mon/free_mon_commands.cpp24
4 files changed, 25 insertions, 27 deletions
diff --git a/jstests/free_mon/free_mon_announce.js b/jstests/free_mon/free_mon_announce.js
index d78d0b58608..3c35e91cf40 100644
--- a/jstests/free_mon/free_mon_announce.js
+++ b/jstests/free_mon/free_mon_announce.js
@@ -14,20 +14,11 @@ const mongod = MongoRunner.runMongod({
assert.neq(mongod, null, 'mongod not running');
const admin = mongod.getDB('admin');
-function getConnectAnnounce() {
- // Capture message as it'd be presented to a user.
- clearRawMongoProgramOutput();
- const exitCode = runMongoProgram(
- 'mongo', '--port', mongod.port, '--eval', "shellHelper( 'show', 'freeMonitoring' );");
- assert.eq(exitCode, 0);
- return rawMongoProgramOutput();
-}
-
// state === 'enabled'.
admin.enableFreeMonitoring();
WaitForRegistration(mongod);
const reminder = "To see your monitoring data";
-assert.neq(getConnectAnnounce().search(reminder), -1, 'userReminder not found');
+assert(FreeMonGetStatus(mongod).userReminder.includes(reminder), 'userReminder not found');
// Cleanup.
MongoRunner.stopMongod(mongod);
diff --git a/jstests/free_mon/free_mon_register_cmd.js b/jstests/free_mon/free_mon_register_cmd.js
index 295908663a5..006d022e6b2 100644
--- a/jstests/free_mon/free_mon_register_cmd.js
+++ b/jstests/free_mon/free_mon_register_cmd.js
@@ -21,9 +21,7 @@ assert.neq(null, conn, 'mongod was unable to start up');
sleep(10 * 1000);
// Then verify that no registrations happened since we haven't runtime enabled yed.
-assert.eq('undecided',
- conn.getDB('admin').getFreeMonitoringStatus().state,
- "Initial state should be 'undecided'");
+assert.eq('undecided', FreeMonGetStatus(conn).state, "Initial state should be 'undecided'");
assert.eq(0, mock_web.queryStats().registers, "mongod registered without enabling free_mod");
assert.commandWorked(conn.adminCommand({setFreeMonitoring: 1, action: "enable"}));
@@ -31,8 +29,7 @@ assert.commandWorked(conn.adminCommand({setFreeMonitoring: 1, action: "enable"})
WaitForFreeMonServerStatusState(conn, 'enabled');
// The command should either timeout or suceed after registration is complete
-const retStatus1 = conn.adminCommand({getFreeMonitoringStatus: 1});
-assert.commandWorked(retStatus1);
+const retStatus1 = FreeMonGetStatus(conn);
assert.eq(retStatus1.state, "enabled", tojson(retStatus1));
const stats = mock_web.queryStats();
@@ -64,8 +61,7 @@ assert.soon(function() {
return regDoc.state == "disabled";
}, "Failed to unregister", 60 * 1000);
-const retStatus2 = conn.adminCommand({getFreeMonitoringStatus: 1});
-assert.commandWorked(retStatus2);
+const retStatus2 = FreeMonGetStatus(conn);
assert.eq(retStatus2.state, "disabled", tojson(retStatus1));
MongoRunner.stopMongod(conn);
diff --git a/jstests/free_mon/libs/free_mon.js b/jstests/free_mon/libs/free_mon.js
index 269f1e65306..351f1a33e48 100644
--- a/jstests/free_mon/libs/free_mon.js
+++ b/jstests/free_mon/libs/free_mon.js
@@ -288,7 +288,12 @@ function FreeMonGetStatus(conn) {
'use strict';
const admin = conn.getDB("admin");
- return assert.commandWorked(admin.runCommand({getFreeMonitoringStatus: 1}));
+ const reply = assert.commandWorked(admin.runCommand({getFreeMonitoringStatus: 1}));
+ // FreeMonitoring has been deprecated and reports 'disabled' regardless of status.
+ assert.eq(reply.state, 'disabled', 'FreeMonitoring has been deprecated');
+
+ // Use the "true" state tucked into the 'debug' field if its available.
+ return reply.debug || reply;
}
/**
diff --git a/src/mongo/db/free_mon/free_mon_commands.cpp b/src/mongo/db/free_mon/free_mon_commands.cpp
index 78cc3f3a420..55487f8a663 100644
--- a/src/mongo/db/free_mon/free_mon_commands.cpp
+++ b/src/mongo/db/free_mon/free_mon_commands.cpp
@@ -83,17 +83,23 @@ public:
IDLParserErrorContext ctx("getFreeMonitoringStatus");
GetFreeMonitoringStatus::parse(ctx, cmdObj);
- if (globalFreeMonParams.freeMonitoringState == EnableCloudStateEnum::kOff) {
- result.append("state", "disabled");
- return true;
+ // FreeMonitoring has been deprecated and will be decomissioned.
+ // Report that FreeMon is disabled even if it's running to draw attention
+ // to the deprecation notice returned from the service.
+ result.append("state"_sd, "disabled"_sd);
+
+ if (globalFreeMonParams.freeMonitoringState != EnableCloudStateEnum::kOff) {
+ // To aid discovery during deprecation period, add true state as context.
+ auto* controller = FreeMonController::get(opCtx->getServiceContext());
+ if (controller) {
+ result.append(
+ "message"_sd,
+ "Free monitoring is deprecated, refer to 'debug' field for actual status"_sd);
+ BSONObjBuilder debug(result.subobjStart("debug"_sd));
+ controller->getStatus(opCtx, &debug);
+ }
}
- auto* controller = FreeMonController::get(opCtx->getServiceContext());
- if (!controller) {
- result.append("state", "disabled");
- } else {
- controller->getStatus(opCtx, &result);
- }
return true;
}
} getFreeMonitoringStatusCommand;