Skip to content

Commit b897300

Browse files
authored
Restart reason telemetry event for pylance (#20821)
Closes #19626
1 parent 8a80ebe commit b897300

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

src/client/activation/node/manager.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { IDisposable, IExtensions, Resource } from '../../common/types';
77
import { debounceSync } from '../../common/utils/decorators';
88
import { IServiceContainer } from '../../ioc/types';
99
import { PythonEnvironment } from '../../pythonEnvironments/info';
10-
import { captureTelemetry } from '../../telemetry';
10+
import { captureTelemetry, sendTelemetryEvent } from '../../telemetry';
1111
import { EventName } from '../../telemetry/constants';
1212
import { Commands } from '../commands';
1313
import { NodeLanguageClientMiddleware } from './languageClientMiddleware';
@@ -44,6 +44,7 @@ export class NodeLanguageServerManager implements ILanguageServerManager {
4444
NodeLanguageServerManager.commandDispose.dispose();
4545
}
4646
NodeLanguageServerManager.commandDispose = commandManager.registerCommand(Commands.RestartLS, () => {
47+
sendTelemetryEvent(EventName.LANGUAGE_SERVER_RESTART, undefined, { reason: 'command' });
4748
this.restartLanguageServer().ignoreErrors();
4849
});
4950
}
@@ -94,6 +95,7 @@ export class NodeLanguageServerManager implements ILanguageServerManager {
9495

9596
@debounceSync(1000)
9697
protected restartLanguageServerDebounced(): void {
98+
sendTelemetryEvent(EventName.LANGUAGE_SERVER_RESTART, undefined, { reason: 'settings' });
9799
this.restartLanguageServer().ignoreErrors();
98100
}
99101

src/client/languageServer/watcher.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import { NoneLSExtensionManager } from './noneLSExtensionManager';
2828
import { PylanceLSExtensionManager } from './pylanceLSExtensionManager';
2929
import { ILanguageServerExtensionManager, ILanguageServerWatcher } from './types';
3030
import { LspNotebooksExperiment } from '../activation/node/lspNotebooksExperiment';
31+
import { sendTelemetryEvent } from '../telemetry';
32+
import { EventName } from '../telemetry/constants';
3133

3234
@injectable()
3335
/**
@@ -184,6 +186,7 @@ export class LanguageServerWatcher implements IExtensionActivationService, ILang
184186

185187
public async restartLanguageServers(): Promise<void> {
186188
this.workspaceLanguageServers.forEach(async (_, resourceString) => {
189+
sendTelemetryEvent(EventName.LANGUAGE_SERVER_RESTART, undefined, { reason: 'notebooksExperiment' });
187190
const resource = Uri.parse(resourceString);
188191
await this.stopLanguageServer(resource);
189192
await this.startLanguageServer(this.languageServerType, resource);

src/client/telemetry/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export enum EventName {
7171
LANGUAGE_SERVER_READY = 'LANGUAGE_SERVER.READY',
7272
LANGUAGE_SERVER_TELEMETRY = 'LANGUAGE_SERVER.EVENT',
7373
LANGUAGE_SERVER_REQUEST = 'LANGUAGE_SERVER.REQUEST',
74+
LANGUAGE_SERVER_RESTART = 'LANGUAGE_SERVER.RESTART',
7475

7576
TERMINAL_CREATE = 'TERMINAL.CREATE',
7677
ACTIVATE_ENV_IN_CURRENT_TERMINAL = 'ACTIVATE_ENV_IN_CURRENT_TERMINAL',

src/client/telemetry/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,17 @@ export interface IEventNamePropertyMapping {
14751475
}
14761476
*/
14771477
[EventName.LANGUAGE_SERVER_REQUEST]: unknown;
1478+
/**
1479+
* Telemetry send when Language Server is restarted.
1480+
*/
1481+
/* __GDPR__
1482+
"language_server_restart" : {
1483+
"reason" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "owner": "karthiknadig" }
1484+
}
1485+
*/
1486+
[EventName.LANGUAGE_SERVER_RESTART]: {
1487+
reason: 'command' | 'settings' | 'notebooksExperiment';
1488+
};
14781489
/**
14791490
* Telemetry event sent when Jedi Language Server is started for workspace (workspace folder in case of multi-root)
14801491
*/

0 commit comments

Comments
 (0)