Skip to content

Commit 42356e3

Browse files
author
Kartik Raj
committed
Add delay when sending telemetry
1 parent f0763f8 commit 42356e3

File tree

3 files changed

+31
-24
lines changed

3 files changed

+31
-24
lines changed

src/client/deprecatedProposedApi.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import { ConfigurationTarget, EventEmitter } from 'vscode';
55
import { arePathsSame } from './common/platform/fs-paths';
66
import { IExtensions, IInterpreterPathService, Resource } from './common/types';
7+
import { sleep } from './common/utils/async';
78
import {
89
EnvironmentsChangedParams,
910
ActiveEnvironmentChangedParams,
@@ -64,16 +65,19 @@ export function buildDeprecatedProposedApi(
6465
const extensions = serviceContainer.get<IExtensions>(IExtensions);
6566
function sendApiTelemetry(apiName: string) {
6667
console.warn('Extension is using deprecated python APIs which will be removed soon');
67-
extensions
68-
.determineExtensionFromCallStack()
69-
.then((info) =>
70-
sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, {
71-
apiName,
72-
extensionId: info.extensionId,
73-
displayName: info.displayName,
74-
}),
75-
)
76-
.ignoreErrors();
68+
// Add a delay so the calling method finishes as soon as possible.
69+
sleep(1000).then(() =>
70+
extensions
71+
.determineExtensionFromCallStack()
72+
.then((info) =>
73+
sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, {
74+
apiName,
75+
extensionId: info.extensionId,
76+
displayName: info.displayName,
77+
}),
78+
)
79+
.ignoreErrors(),
80+
);
7781
}
7882

7983
const proposed: DeprecatedProposedAPI = {

src/client/deprecatedProposedApiTypes.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
/* eslint-disable @typescript-eslint/no-unused-vars */
21
// Copyright (c) Microsoft Corporation. All rights reserved.
32
// Licensed under the MIT License.
43

54
import { Uri, Event } from 'vscode';
6-
import { ProposedExtensionAPI, Resource } from './proposedApiTypes';
5+
import { Resource } from './proposedApiTypes';
76
import { PythonEnvKind, EnvPathType } from './pythonEnvironments/base/info';
87
import { ProgressNotificationEvent, GetRefreshEnvironmentsOptions } from './pythonEnvironments/base/locator';
98

src/client/proposedApi.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
reportActiveInterpreterChangedDeprecated,
3333
reportInterpretersChanged,
3434
} from './deprecatedProposedApi';
35+
import { sleep } from './common/utils/async';
3536

3637
type ActiveEnvironmentChangeEvent = {
3738
resource: WorkspaceFolder | undefined;
@@ -106,16 +107,19 @@ export function buildProposedApi(
106107
const disposables = serviceContainer.get<IDisposableRegistry>(IDisposableRegistry);
107108
const extensions = serviceContainer.get<IExtensions>(IExtensions);
108109
function sendApiTelemetry(apiName: string) {
109-
extensions
110-
.determineExtensionFromCallStack()
111-
.then((info) =>
112-
sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, {
113-
apiName,
114-
extensionId: info.extensionId,
115-
displayName: info.displayName,
116-
}),
117-
)
118-
.ignoreErrors();
110+
// Add a delay so the calling method finishes as soon as possible.
111+
sleep(1000).then(() =>
112+
extensions
113+
.determineExtensionFromCallStack()
114+
.then((info) =>
115+
sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, {
116+
apiName,
117+
extensionId: info.extensionId,
118+
displayName: info.displayName,
119+
}),
120+
)
121+
.ignoreErrors(),
122+
);
119123
}
120124
disposables.push(
121125
discoveryApi.onChanged((e) => {
@@ -182,7 +186,6 @@ export function buildProposedApi(
182186
return onDidActiveInterpreterChangedEvent.event;
183187
},
184188
resolveEnvironment: async (env: Environment | EnvironmentId | string) => {
185-
sendApiTelemetry('resolveEnvironment');
186189
let path = typeof env !== 'string' ? env.path : env;
187190
if (pathUtils.basename(path) === path) {
188191
// Value can be `python`, `python3`, `python3.9` etc.
@@ -201,17 +204,18 @@ export function buildProposedApi(
201204
}
202205
path = fullyQualifiedPath;
203206
}
207+
sendApiTelemetry('resolveEnvironment');
204208
return resolveEnvironment(path, discoveryApi);
205209
},
206210
get all(): Environment[] {
207211
sendApiTelemetry('all');
208212
return discoveryApi.getEnvs().map((e) => convertEnvInfoAndGetReference(e));
209213
},
210214
async refreshEnvironments(options?: RefreshOptions) {
211-
sendApiTelemetry('refreshEnvironments');
212215
await discoveryApi.triggerRefresh(undefined, {
213216
ifNotTriggerredAlready: !options?.forceRefresh,
214217
});
218+
sendApiTelemetry('refreshEnvironments');
215219
},
216220
get onDidChangeEnvironments() {
217221
sendApiTelemetry('onDidChangeEnvironments');

0 commit comments

Comments
 (0)