diff --git a/packages/compass-shell/src/components/compass-shell/compass-shell.jsx b/packages/compass-shell/src/components/compass-shell/compass-shell.jsx index 80c456650c8..534b932affa 100644 --- a/packages/compass-shell/src/components/compass-shell/compass-shell.jsx +++ b/packages/compass-shell/src/components/compass-shell/compass-shell.jsx @@ -52,6 +52,11 @@ export class CompassShell extends Component { componentDidMount() { this.loadHistory(); + window.addEventListener('beforeunload', this.terminateRuntime); + } + + componentWillUnmount() { + window.removeEventListener('beforeunload', this.terminateRuntime); } onShellOutputChanged = (output) => { @@ -70,6 +75,12 @@ export class CompassShell extends Component { }); } + terminateRuntime = () => { + if (this.props.runtime) { + this.props.runtime.terminate(); + } + } + lastOpenHeight = defaultShellHeightOpened; resizableRef = null; diff --git a/packages/compass-shell/src/stores/store.js b/packages/compass-shell/src/stores/store.js index 1da583bb266..f428e495f63 100644 --- a/packages/compass-shell/src/stores/store.js +++ b/packages/compass-shell/src/stores/store.js @@ -42,6 +42,14 @@ export default class CompassShellStore { } onDataServiceDisconnected = () => { + const { + runtime: { runtime }, + } = this.reduxStore.getState(); + + if (runtime) { + runtime.terminate(); + } + this.reduxStore.dispatch(setupRuntime( null, null,