File tree Expand file tree Collapse file tree 4 files changed +28
-3
lines changed
Expand file tree Collapse file tree 4 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -177,7 +177,13 @@ function getCommands(
177177 cliServer . restartCliServer ( ) ;
178178 await Promise . all ( [
179179 queryRunner . restartQueryServer ( progress , token ) ,
180- ideServer . restart ( ) ,
180+ async ( ) => {
181+ if ( ideServer . isRunning ( ) ) {
182+ await ideServer . restart ( ) ;
183+ } else {
184+ await ideServer . start ( ) ;
185+ }
186+ } ,
181187 ] ) ;
182188 void showAndLogInformationMessage ( "CodeQL Query Server restarted." , {
183189 outputLogger : queryServerLogger ,
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ export class ServerProcess implements Disposable {
2323 dispose ( ) : void {
2424 void this . logger . log ( `Stopping ${ this . name } ...` ) ;
2525 this . connection . dispose ( ) ;
26+ this . connection . end ( ) ;
2627 this . child . stdin ! . end ( ) ;
2728 this . child . stderr ! . destroy ( ) ;
2829 // TODO kill the process if it doesn't terminate after a certain time limit.
Original file line number Diff line number Diff line change @@ -1029,7 +1029,19 @@ export class DatabaseManager extends DisposableObject {
10291029 token : vscode . CancellationToken ,
10301030 dbItem : DatabaseItem ,
10311031 ) {
1032- await this . qs . deregisterDatabase ( progress , token , dbItem ) ;
1032+ try {
1033+ await this . qs . deregisterDatabase ( progress , token , dbItem ) ;
1034+ } catch ( e ) {
1035+ const message = getErrorMessage ( e ) ;
1036+ if ( message === "Connection is disposed." ) {
1037+ // This is expected if the query server is not running.
1038+ void extLogger . log (
1039+ `Could not de-register database '${ dbItem . name } ' because query server is not running.` ,
1040+ ) ;
1041+ return ;
1042+ }
1043+ throw e ;
1044+ }
10331045 }
10341046 private async registerDatabase (
10351047 progress : ProgressCallback ,
Original file line number Diff line number Diff line change 11import { ensureFile } from "fs-extra" ;
22
3- import { DisposableObject } from "../pure/disposable-object" ;
3+ import { DisposableObject , DisposeHandler } from "../pure/disposable-object" ;
44import { CancellationToken } from "vscode" ;
55import { createMessageConnection , RequestType } from "vscode-jsonrpc/node" ;
66import * as cli from "../cli" ;
@@ -224,4 +224,10 @@ export class QueryServerClient extends DisposableObject {
224224 delete this . progressCallbacks [ id ] ;
225225 }
226226 }
227+
228+ public dispose ( disposeHandler ?: DisposeHandler | undefined ) : void {
229+ this . progressCallbacks = { } ;
230+ this . stopQueryServer ( ) ;
231+ super . dispose ( disposeHandler ) ;
232+ }
227233}
You can’t perform that action at this time.
0 commit comments