diff --git a/packages/api/package.json b/packages/api/package.json index 07398b676..7a94d1bdd 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -9,6 +9,7 @@ "axios": "^0.19.0", "body-parser": "^1.19.0", "bufferutil": "^4.0.1", + "byline": "^5.0.0", "cors": "^2.8.5", "cross-env": "^6.0.3", "csv": "^5.3.2", diff --git a/packages/api/src/controllers/runners.js b/packages/api/src/controllers/runners.js index e90fa21de..7f820f25f 100644 --- a/packages/api/src/controllers/runners.js +++ b/packages/api/src/controllers/runners.js @@ -2,6 +2,7 @@ const _ = require('lodash'); const path = require('path'); const fs = require('fs-extra'); const uuidv1 = require('uuid/v1'); +const byline = require('byline'); const socket = require('../utility/socket'); const { fork } = require('child_process'); const { rundir, uploadsdir } = require('../utility/directories'); @@ -55,15 +56,10 @@ module.exports = { }, }); const pipeDispatcher = (severity) => (data) => - data - .toString() - .split('\n') - .forEach((message) => { - if (message.trim()) this.dispatchMessage(runid, { severity, message: message.trim() }); - }); + this.dispatchMessage(runid, { severity, message: data.toString().trim() }); - subprocess.stdout.on('data', pipeDispatcher('info')); - subprocess.stderr.on('data', pipeDispatcher('error')); + byline(subprocess.stdout).on('data', pipeDispatcher('info')); + byline(subprocess.stderr).on('data', pipeDispatcher('error')); subprocess.on('exit', (code) => { socket.emit(`runner-done-${runid}`, code); }); diff --git a/yarn.lock b/yarn.lock index 13849b327..80a33eee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2793,6 +2793,11 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"