Skip to content

Commit 6423ab5

Browse files
Optimize the track of empty completion response (#1230)
1 parent 667993f commit 6423ab5

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

src/daemon/index.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { sendError, sendInfo } from "vscode-extension-telemetry-wrapper";
77
import { LSDaemon } from "./daemon";
88
import { getExpService } from "../exp";
99
import { TreatmentVariables } from "../exp/TreatmentVariables";
10+
import { workspace } from "vscode";
1011

1112
const delay = promisify(setTimeout);
1213

@@ -85,8 +86,9 @@ const INTERNAL_ERROR_CODE: number = -32603; // Internal Error.
8586
async function traceLSPPerformance(javaExt: vscode.Extension<any>) {
8687
const javaExtVersion = javaExt.packageJSON?.version;
8788
const isPreReleaseVersion = /^\d+\.\d+\.\d{10}/.test(javaExtVersion);
88-
const isTreatment = !isPreReleaseVersion &&
89-
(await getExpService()?.getTreatmentVariableAsync(TreatmentVariables.VSCodeConfig, TreatmentVariables.JavaCompletionSampling, true /*checkCache*/) || false);
89+
const redHatTelemetryEnabled = workspace.getConfiguration('redhat.telemetry').get('enabled', false);
90+
const isTreatment = !isPreReleaseVersion &&
91+
(redHatTelemetryEnabled || await getExpService()?.getTreatmentVariableAsync(TreatmentVariables.VSCodeConfig, TreatmentVariables.JavaCompletionSampling, true /*checkCache*/));
9092
const sampling: string = isPreReleaseVersion ? "pre-release" : (isTreatment ? "sampling" : "");
9193
// Trace the interested LSP requests performance
9294
javaExt.exports?.onDidRequestEnd?.((traceEvent: any) => {
@@ -122,30 +124,44 @@ async function traceLSPPerformance(javaExt: vscode.Extension<any>) {
122124
exception,
123125
javaversion: javaExtVersion,
124126
remark: sampling,
127+
data: redactDataProperties(traceEvent.data),
125128
});
126129
return;
127130
}
128131

129132
if (INTERESTED_REQUESTS.has(traceEvent.type)) {
130133
// See https://github.com/redhat-developer/vscode-java/pull/3010
131134
// to exclude the invalid completion requests.
132-
if (!traceEvent.resultLength && traceEvent.type === "textDocument/completion") {
135+
if (!traceEvent.resultLength && traceEvent.type === "textDocument/completion"
136+
&& (!traceEvent.data?.triggerKind || traceEvent.data?.triggerCharacter === ' ')) {
133137
return;
134138
}
135139

136140
sendInfo("", {
137141
name: "lsp",
138142
kind: escapeLspRequestName(traceEvent.type),
139143
duration: Math.trunc(traceEvent.duration),
140-
resultLength: traceEvent.resultLength,
144+
resultsize: traceEvent.resultLength === undefined ? "" : String(traceEvent.resultLength),
141145
javaversion: javaExtVersion,
142146
remark: sampling,
147+
data: redactDataProperties(traceEvent.data),
143148
});
144149
return;
145150
}
146151
});
147152
}
148153

154+
function redactDataProperties(data: any): string {
155+
if (data?.triggerKind) {
156+
return JSON.stringify({
157+
triggerKind: data.triggerKind,
158+
triggerCharacter: data.triggerCharacter,
159+
});
160+
}
161+
162+
return "";
163+
}
164+
149165
async function traceJavaExtension(javaExt: vscode.Extension<any>) {
150166
const javaExtVersion = javaExt.packageJSON?.version;
151167
const isPreReleaseVersion = /^\d+\.\d+\.\d{10}/.test(javaExtVersion);

0 commit comments

Comments
 (0)