Skip to content

Commit c12c879

Browse files
authored
fixes to telemetry, objectid, and local config file (#210)
* identify user when running mongosh:update-user * do not log segment api key anymore * toString on both ObjectID creations to make sure it's always a string * log node version as part of the connection log event
1 parent e57381f commit c12c879

File tree

7 files changed

+32
-12
lines changed

7 files changed

+32
-12
lines changed

packages/cli-repl/package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/cli-repl/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"analytics-node": "^3.4.0-beta.1",
5050
"ansi-escape-sequences": "^5.1.2",
5151
"bson": "^4.0.4",
52+
"fast-json-parse": "^1.0.3",
5253
"is-recoverable-error": "^1.0.0",
5354
"lodash.set": "^4.3.2",
5455
"minimist": "^1.2.5",

packages/cli-repl/src/cli-repl.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@
22

33
import { CliServiceProvider, NodeOptions } from '@mongosh/service-provider-server';
44
import formatOutput, { formatError } from './format-output';
5+
import { LineByLineInput } from './line-by-line-input';
6+
import { TELEMETRY, MONGOSH_WIKI } from './constants';
57
import ShellEvaluator from '@mongosh/shell-evaluator';
68
import isRecoverableError from 'is-recoverable-error';
79
import { MongoshWarning } from '@mongosh/errors';
810
import { changeHistory } from '@mongosh/history';
911
import { REPLServer, Recoverable } from 'repl';
1012
import getConnectInfo from './connect-info';
11-
import { TELEMETRY, MONGOSH_WIKI } from './constants';
13+
import jsonParse from 'fast-json-parse';
1214
import CliOptions from './cli-options';
1315
import completer from './completer';
1416
import i18n from '@mongosh/i18n';
1517
import { ObjectId } from 'bson';
1618
import repl from 'pretty-repl';
1719
import Nanobus from 'nanobus';
20+
import { redactPwd } from '.';
1821
import logger from './logger';
1922
import mkdirp from 'mkdirp';
2023
import clr from './clr';
@@ -23,8 +26,6 @@ import util from 'util';
2326
import read from 'read';
2427
import os from 'os';
2528
import fs from 'fs';
26-
import { redactPwd } from '.';
27-
import { LineByLineInput } from './line-by-line-input';
2829

2930
/**
3031
* Connecting text key.
@@ -243,17 +244,25 @@ class CliRepl {
243244

244245
try {
245246
fd = fs.openSync(configPath, 'wx');
246-
this.userId = new ObjectId(Date.now());
247+
this.userId = new ObjectId(Date.now()).toString();
247248
this.enableTelemetry = true;
248249
this.disableGreetingMessage = false;
249250
this.bus.emit('mongosh:new-user', this.userId, this.enableTelemetry);
250251
this.writeConfigFileSync(configPath);
251252
} catch (err) {
252253
if (err.code === 'EEXIST') {
253-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
254-
this.userId = config.userId;
254+
// make sure we catch errors for json parse and always have err and
255+
// value on config result
256+
const config = jsonParse(fs.readFileSync(configPath, 'utf8'));
257+
258+
if (config.err) {
259+
this.bus.emit('mongosh:error', 'Unable to parse user config', err);
260+
return;
261+
}
262+
263+
this.userId = config.value.userId;
255264
this.disableGreetingMessage = true;
256-
this.enableTelemetry = config.enableTelemetry;
265+
this.enableTelemetry = config.value.enableTelemetry;
257266
this.bus.emit('mongosh:update-user', this.userId, this.enableTelemetry);
258267
return;
259268
}

packages/cli-repl/src/connect-info.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ describe('getConnectInfo', function() {
8585
is_genuine: true,
8686
non_genuine_server_name: 'mongodb',
8787
server_arch: 'x86_64',
88+
node_version: process.version,
8889
server_os: 'osx',
8990
uri: ATLAS_URI
9091
};
@@ -107,6 +108,7 @@ describe('getConnectInfo', function() {
107108
is_genuine: true,
108109
non_genuine_server_name: 'mongodb',
109110
server_arch: 'x86_64',
111+
node_version: process.version,
110112
server_os: 'osx',
111113
uri: ATLAS_URI
112114
};

packages/cli-repl/src/connect-info.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface ConnectInfo {
1515
dl_version?: string;
1616
is_genuine: boolean;
1717
non_genuine_server_name: string;
18+
node_version: string;
1819
uri: string;
1920
}
2021

@@ -42,6 +43,7 @@ export default function getConnectInfo(uri: string, buildInfo: any, cmdLineOpts:
4243
auth_type,
4344
is_data_lake,
4445
dl_version,
46+
node_version: process.version,
4547
is_genuine,
4648
non_genuine_server_name
4749
};

packages/cli-repl/src/logger.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ interface ConnectEvent {
4747
dl_version?: string;
4848
is_genuine: boolean;
4949
non_genuine_server_name: string;
50+
node_version: string;
5051
uri: string;
5152
}
5253

@@ -57,7 +58,7 @@ NoopAnalytics.prototype.identify = function(): void {};
5758
NoopAnalytics.prototype.track = function(): void {};
5859

5960
export default function logger(bus: any, logDir: string): void {
60-
const session_id = new ObjectId(Date.now());
61+
const session_id = new ObjectId(Date.now()).toString();
6162
const logDest = path.join(logDir, `${session_id}_log`);
6263
const log = pino({ name: 'monogsh' }, pino.destination(logDest));
6364
console.log(`Current sessionID: ${session_id}`);
@@ -67,7 +68,6 @@ export default function logger(bus: any, logDir: string): void {
6768
let analytics = new NoopAnalytics();
6869
try {
6970
// this file gets written as a part of a release
70-
log.warn(require('./analytics-config.js').SEGMENT_API_KEY);
7171
analytics = new Analytics(require('./analytics-config.js').SEGMENT_API_KEY);
7272
} catch (e) {
7373
bus.emit('mongosh:error', e);
@@ -97,6 +97,7 @@ export default function logger(bus: any, logDir: string): void {
9797
bus.on('mongosh:update-user', function(id, enableTelemetry) {
9898
userId = id;
9999
telemetry = enableTelemetry;
100+
if (telemetry) analytics.identify({ userId });
100101
log.info('mongosh:update-user', { enableTelemetry });
101102
});
102103

packages/java-shell/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)