Skip to content
Snippets Groups Projects
Unverified Commit 5f9826be authored by Douglas Gubert's avatar Douglas Gubert Committed by GitHub
Browse files

fix: deno runtime controller not handling undefined child process reference correctly (#33494)

parent d9fe5bbe
No related branches found
No related tags found
No related merge requests found
---
'@rocket.chat/apps-engine': patch
---
Fixed a problem in the deno runtime controller where it would not handle undefined child process references correctly
......@@ -71,7 +71,7 @@ export type DenoRuntimeOptions = {
};
export class DenoRuntimeSubprocessController extends EventEmitter {
private deno: child_process.ChildProcess;
private deno: child_process.ChildProcess | undefined;
private state: 'uninitialized' | 'ready' | 'invalid' | 'restarting' | 'unknown' | 'stopped';
......@@ -166,6 +166,11 @@ export class DenoRuntimeSubprocessController extends EventEmitter {
}
public async killProcess(): Promise<void> {
if (!this.deno) {
this.debug('No child process reference');
return;
}
// This field is not populated if the process is killed by the OS
if (this.deno.killed) {
this.debug('App process was already killed');
......@@ -201,7 +206,7 @@ export class DenoRuntimeSubprocessController extends EventEmitter {
public async getStatus(): Promise<AppStatus> {
// If the process has been terminated, we can't get the status
if (this.deno.exitCode !== null) {
if (!this.deno || this.deno.exitCode !== null) {
return AppStatus.UNKNOWN;
}
......@@ -311,6 +316,10 @@ export class DenoRuntimeSubprocessController extends EventEmitter {
}
private setupListeners(): void {
if (!this.deno) {
return;
}
this.deno.stderr.on('data', this.parseError.bind(this));
this.deno.on('error', (err) => {
this.state = 'invalid';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment