Skip to content

Commit 03c8cf7

Browse files
authored
fix: ipc not work with worker_threads mode (#5210)
1 parent 27a4942 commit 03c8cf7

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

lib/core/messenger/ipc.js

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const debug = require('util').debuglog('egg:util:messenger:ipc');
44
const is = require('is-type-of');
5+
const workerThreads = require('worker_threads');
56
const sendmessage = require('sendmessage');
67
const EventEmitter = require('events');
78

@@ -22,6 +23,9 @@ class Messenger extends EventEmitter {
2223
});
2324
this._onMessage = this._onMessage.bind(this);
2425
process.on('message', this._onMessage);
26+
if (!workerThreads.isMainThread) {
27+
workerThreads.parentPort.on('message', this._onMessage);
28+
}
2529
}
2630

2731
/**

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"koa-override": "^3.0.0",
5252
"ms": "^2.1.3",
5353
"on-finished": "^2.4.1",
54-
"sendmessage": "^1.1.0",
54+
"sendmessage": "^2.0.0",
5555
"urllib": "^2.33.0",
5656
"urllib-next": "^3.9.0",
5757
"utility": "^1.17.0",

test/lib/core/messenger/ipc.test.js

+27
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,31 @@ describe('test/lib/core/messenger/ipc.test.js', () => {
162162
}
163163
});
164164
});
165+
166+
describe('worker_threads mode', () => {
167+
let app;
168+
before(() => {
169+
mm.env('default');
170+
app = utils.cluster('apps/messenger-app-agent', { workers: 1, startMode: 'worker_threads' });
171+
app.coverage(false);
172+
return app.ready();
173+
});
174+
after(() => app.close());
175+
176+
it('app should accept agent message', done => {
177+
setTimeout(() => {
178+
assert(count(app.stdout, 'agent2app') === 1);
179+
assert(count(app.stdout, 'app2app') === 1);
180+
assert(count(app.stdout, 'agent2agent') === 1);
181+
assert(count(app.stdout, 'app2agent') === 1);
182+
done();
183+
}, 500);
184+
185+
function count(data, key) {
186+
return data.split('\n').filter(line => {
187+
return line.indexOf(key) >= 0;
188+
}).length;
189+
}
190+
});
191+
});
165192
});

0 commit comments

Comments
 (0)