-
Notifications
You must be signed in to change notification settings - Fork 152
/
Copy pathabort.js
46 lines (38 loc) · 1.32 KB
/
abort.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const workerpool = require("..");
var workerCount = 0;
// create a worker pool
const pool = workerpool.pool(__dirname + "/workers/cleanupAbort.js", {
// maximum time to wait for worker to cleanup it's resources
// on termination before forcefully stopping the worker
workerTerminateTimeout: 1000,
onCreateWorker: (args) => {
console.log("New worker created");
workerCount += 1;
}
});
function add (a, b) {
return a + b;
}
const main = async () => {
const cleanedUpTask = pool.exec('asyncTimeout', []).timeout(1_000).catch((err) => {
console.log("task timeout");
console.log("timeout occured: ", err.message);
console.log("worker count ", workerCount);
return pool.exec(add, [1, 2]).then((sum) => {
console.log('add result', sum);
console.log("worker count: ", workerCount);
});
});
await cleanedUpTask;
const canceledTask = pool.exec('asyncAbortHandlerNeverResolves').cancel().catch((err) => {
console.log("task canceled");
console.log("cancel occured: ", err.message);
console.log("worker count ", workerCount);
return pool.exec(add, [1, 2]).then((sum) => {
console.log('add result', sum);
console.log("worker count: ", workerCount);
});
});
await canceledTask;
}
main();