diff options
author | Sara Golemon <sara.golemon@mongodb.com> | 2023-04-17 14:19:24 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-28 04:22:03 +0000 |
commit | 8c9ab2dc711df435840237c90fb04d6ff3cb8b71 (patch) | |
tree | 8bc20c747af739641a4005ff4be13b9509970813 | |
parent | e0d9ea8507cb8aaad00f2aedc1a60e3a88deafcf (diff) | |
download | mongo-8c9ab2dc711df435840237c90fb04d6ff3cb8b71.tar.gz |
SERVER-76063 Always report FreeMonitoring as disabled
(cherry picked from commit 70d26d65a1e55e4da104f4f150bdc8b6d2ae5b65)
-rw-r--r-- | jstests/free_mon/free_mon_announce.js | 11 | ||||
-rw-r--r-- | jstests/free_mon/free_mon_register_cmd.js | 10 | ||||
-rw-r--r-- | jstests/free_mon/libs/free_mon.js | 7 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_commands.cpp | 24 |
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; |