diff --git a/src/vs/base/node/id.ts b/src/vs/base/node/id.ts index 839864bef06ca0a6c3b6efcd6d15ef3deb6cd321..1078ca5c7b03df144d1f7cff29e1bc27a053403e 100644 --- a/src/vs/base/node/id.ts +++ b/src/vs/base/node/id.ts @@ -97,8 +97,9 @@ export function _futureMachineIdExperiment(): string { return mac.value; } +let machineId: TPromise; export function getMachineId(): TPromise { - return new TPromise(resolve => { + return machineId || (machineId = new TPromise(resolve => { try { getmac.getMac((error, macAddress) => { if (!error) { @@ -111,5 +112,5 @@ export function getMachineId(): TPromise { errors.onUnexpectedError(err); resolve(uuid.generateUuid()); // fallback, generate a UUID } - }); + })); } diff --git a/src/vs/platform/telemetry/node/commonProperties.ts b/src/vs/platform/telemetry/node/commonProperties.ts index 6380e5396ae1d709a1ab8825a3d2d946d57f6d11..c2903c8046f46726a288b9451ea9595e914fb522 100644 --- a/src/vs/platform/telemetry/node/commonProperties.ts +++ b/src/vs/platform/telemetry/node/commonProperties.ts @@ -7,6 +7,7 @@ import * as Platform from 'vs/base/common/platform'; import * as os from 'os'; import { TPromise } from 'vs/base/common/winjs.base'; import * as uuid from 'vs/base/common/uuid'; +import { getMachineId } from 'vs/base/node/id'; export function resolveCommonProperties(commit: string, version: string): TPromise<{ [name: string]: string; }> { const result: { [name: string]: string; } = Object.create(null); @@ -16,6 +17,7 @@ export function resolveCommonProperties(commit: string, version: string): TPromi result['version'] = version; result['common.osVersion'] = os.release(); result['common.platform'] = Platform.Platform[Platform.platform]; + const promise = getMachineId().then(value => result['common.machineId'] = value); // dynamic properties which value differs on each call let seq = 0; @@ -35,5 +37,5 @@ export function resolveCommonProperties(commit: string, version: string): TPromi } }); - return TPromise.as(result); + return promise.then(() => result); } \ No newline at end of file