Use more explit name for request start time

Note that this is the total time the request has been in the server queue, not the actual execution time
This commit is contained in:
Matt Bierner
2020-01-17 15:13:20 -08:00
parent 5359a9373a
commit 74cc2f352a
4 changed files with 21 additions and 14 deletions

View File

@@ -9,7 +9,7 @@ import { ServerResponse } from '../typescriptService';
export interface CallbackItem<R> {
readonly onSuccess: (value: R) => void;
readonly onError: (err: Error) => void;
readonly startTime: number;
readonly queuingStartTime: number;
readonly isAsync: boolean;
}
@@ -48,4 +48,4 @@ export class CallbackMap<R extends Proto.Response> {
this._asyncCallbacks.delete(seq);
}
}
}
}

View File

@@ -140,10 +140,10 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
const event = message as Proto.Event;
if (event.event === 'requestCompleted') {
const seq = (event as Proto.RequestCompletedEvent).body.request_seq;
const p = this._callbacks.fetch(seq);
if (p) {
this._tracer.traceRequestCompleted(this._serverId, 'requestCompleted', seq, p.startTime);
p.onSuccess(undefined);
const callback = this._callbacks.fetch(seq);
if (callback) {
this._tracer.traceRequestCompleted(this._serverId, 'requestCompleted', seq, callback);
callback.onSuccess(undefined);
}
} else {
this._tracer.traceEvent(this._serverId, event);
@@ -186,7 +186,7 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
return;
}
this._tracer.traceResponse(this._serverId, response, callback.startTime);
this._tracer.traceResponse(this._serverId, response, callback);
if (response.success) {
callback.onSuccess(response);
} else if (response.message === 'No content available.') {
@@ -210,7 +210,7 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
let result: Promise<ServerResponse.Response<Proto.Response>> | undefined;
if (executeInfo.expectsResult) {
result = new Promise<ServerResponse.Response<Proto.Response>>((resolve, reject) => {
this._callbacks.add(request.seq, { onSuccess: resolve, onError: reject, startTime: Date.now(), isAsync: executeInfo.isAsync }, executeInfo.isAsync);
this._callbacks.add(request.seq, { onSuccess: resolve, onError: reject, queuingStartTime: Date.now(), isAsync: executeInfo.isAsync }, executeInfo.isAsync);
if (executeInfo.token) {
executeInfo.token.onCancellationRequested(() => {

View File

@@ -714,7 +714,10 @@ export default class TypeScriptServiceClient extends Disposable implements IType
return this.bufferSyncSupport.interuptGetErr(f);
}
private fatalError(command: string, error: Error): void {
private fatalError(command: string, error: unknown): void {
if (!(error instanceof TypeScriptServerError)) {
console.log('fdasfasdf');
}
/* __GDPR__
"fatalError" : {
"${include}": [

View File

@@ -29,6 +29,10 @@ namespace Trace {
}
}
interface RequestExecutionMetadata {
readonly queuingStartTime: number
}
export default class Tracer {
private trace?: Trace;
@@ -61,7 +65,7 @@ export default class Tracer {
this.logTrace(serverId, `Sending request: ${request.command} (${request.seq}). Response expected: ${responseExpected ? 'yes' : 'no'}. Current queue length: ${queueLength}`, data);
}
public traceResponse(serverId: string, response: Proto.Response, startTime: number): void {
public traceResponse(serverId: string, response: Proto.Response, meta: RequestExecutionMetadata): void {
if (this.trace === Trace.Off) {
return;
}
@@ -69,14 +73,14 @@ export default class Tracer {
if (this.trace === Trace.Verbose && response.body) {
data = `Result: ${JSON.stringify(response.body, null, 4)}`;
}
this.logTrace(serverId, `Response received: ${response.command} (${response.request_seq}). Request took ${Date.now() - startTime} ms. Success: ${response.success} ${!response.success ? '. Message: ' + response.message : ''}`, data);
this.logTrace(serverId, `Response received: ${response.command} (${response.request_seq}). Request took ${Date.now() - meta.queuingStartTime} ms. Success: ${response.success} ${!response.success ? '. Message: ' + response.message : ''}`, data);
}
public traceRequestCompleted(serverId: string, command: string, request_seq: number, startTime: number): any {
public traceRequestCompleted(serverId: string, command: string, request_seq: number, meta: RequestExecutionMetadata): any {
if (this.trace === Trace.Off) {
return;
}
this.logTrace(serverId, `Async response received: ${command} (${request_seq}). Request took ${Date.now() - startTime} ms.`);
this.logTrace(serverId, `Async response received: ${command} (${request_seq}). Request took ${Date.now() - meta.queuingStartTime} ms.`);
}
public traceEvent(serverId: string, event: Proto.Event): void {
@@ -95,4 +99,4 @@ export default class Tracer {
this.logger.logLevel('Trace', `<${serverId}> ${message}`, data);
}
}
}
}