From 3187567a0e13ddbc189ad6c0ec7373a1e80c30f4 Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 1 Apr 2021 07:01:59 -0700 Subject: [PATCH] [cli-dev-mode] complete state subjects when shutting down (#96003) Co-authored-by: spalger --- packages/kbn-cli-dev-mode/src/dev_server.ts | 6 ++++ .../kbn-cli-dev-mode/src/optimizer.test.ts | 1 + packages/kbn-cli-dev-mode/src/optimizer.ts | 28 +++++++++++++------ packages/kbn-cli-dev-mode/src/watcher.ts | 5 ++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/packages/kbn-cli-dev-mode/src/dev_server.ts b/packages/kbn-cli-dev-mode/src/dev_server.ts index 3daf298c8232..60a279e456e3 100644 --- a/packages/kbn-cli-dev-mode/src/dev_server.ts +++ b/packages/kbn-cli-dev-mode/src/dev_server.ts @@ -249,5 +249,11 @@ export class DevServer { ) .subscribe(subscriber) ); + + // complete state subjects when run$ completes + subscriber.add(() => { + this.phase$.complete(); + this.ready$.complete(); + }); }); } diff --git a/packages/kbn-cli-dev-mode/src/optimizer.test.ts b/packages/kbn-cli-dev-mode/src/optimizer.test.ts index e3bfb2eb0bb9..ee8ea5f38ae8 100644 --- a/packages/kbn-cli-dev-mode/src/optimizer.test.ts +++ b/packages/kbn-cli-dev-mode/src/optimizer.test.ts @@ -180,6 +180,7 @@ it('is ready when optimizer phase is success or issue and logs in familiar forma "ready: false", "", "ready: true", + "complete", ] `); diff --git a/packages/kbn-cli-dev-mode/src/optimizer.ts b/packages/kbn-cli-dev-mode/src/optimizer.ts index 750b61140e92..fab566829f7a 100644 --- a/packages/kbn-cli-dev-mode/src/optimizer.ts +++ b/packages/kbn-cli-dev-mode/src/optimizer.ts @@ -107,14 +107,26 @@ export class Optimizer { }, ]); - this.run$ = runOptimizer(config).pipe( - logOptimizerState(log, config), - tap(({ state }) => { - this.phase$.next(state.phase); - this.ready$.next(state.phase === 'success' || state.phase === 'issue'); - }), - ignoreElements() - ); + this.run$ = new Rx.Observable((subscriber) => { + subscriber.add( + runOptimizer(config) + .pipe( + logOptimizerState(log, config), + tap(({ state }) => { + this.phase$.next(state.phase); + this.ready$.next(state.phase === 'success' || state.phase === 'issue'); + }), + ignoreElements() + ) + .subscribe(subscriber) + ); + + // complete state subjects when run$ completes + subscriber.add(() => { + this.phase$.complete(); + this.ready$.complete(); + }); + }); } getPhase$() { diff --git a/packages/kbn-cli-dev-mode/src/watcher.ts b/packages/kbn-cli-dev-mode/src/watcher.ts index 8e8d2db1b20b..17993326cfcf 100644 --- a/packages/kbn-cli-dev-mode/src/watcher.ts +++ b/packages/kbn-cli-dev-mode/src/watcher.ts @@ -103,6 +103,11 @@ export class Watcher { .pipe(ignoreElements()) .subscribe(subscriber) ); + + // complete state subjects when run$ completes + subscriber.add(() => { + this.restart$.complete(); + }); }); serverShouldRestart$() {