🐛 Fix bug that child process did exit before message got sent

This commit is contained in:
Jan Oberhauser 2019-08-09 11:07:54 +02:00
parent 62e8a69f78
commit e1a9d21254

View file

@ -133,11 +133,20 @@ export class WorkflowRunnerProcess {
*
* @param {string} type The type of data to send
* @param {*} data The data
* @returns {Promise<void>}
*/
function sendToParentProcess(type: string, data: any): void { // tslint:disable-line:no-any
process.send!({
type,
data,
async function sendToParentProcess(type: string, data: any): Promise<void> { // tslint:disable-line:no-any
return new Promise((resolve, reject) => {
process.send!({
type,
data,
}, (error: Error) => {
if (error) {
return reject(error);
}
resolve();
});
});
}
@ -152,7 +161,7 @@ process.on('message', async (message: IProcessMessage) => {
if (message.type === 'startWorkflow') {
const runData = await workflowRunner.runWorkflow(message.data);
sendToParentProcess('end', {
await sendToParentProcess('end', {
runData,
});
@ -186,7 +195,7 @@ process.on('message', async (message: IProcessMessage) => {
workflowRunner.sendHookToParentProcess('workflowExecuteAfter', [fullRunData]);
}
sendToParentProcess('end', {
await sendToParentProcess('end', {
fullRunData,
});
@ -200,9 +209,9 @@ process.on('message', async (message: IProcessMessage) => {
stack: error.stack,
} as IExecutionError;
sendToParentProcess('processError', {
await sendToParentProcess('processError', {
executionError,
});
process.exit();
}
});
});