@nsshunt/stsrunnerframework 2.0.32 → 2.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +45 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +45 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/types/abstractRunnerExecutionWorker.d.ts +1 -0
- package/types/abstractRunnerExecutionWorker.d.ts.map +1 -1
- package/types/commonTypes.d.ts +9 -1
- package/types/commonTypes.d.ts.map +1 -1
- package/types/testing/mockedWorkerTestRunner01.d.ts +1 -0
- package/types/testing/mockedWorkerTestRunner01.d.ts.map +1 -1
- package/types/workerInstance.d.ts.map +1 -1
- package/types/workerManager.d.ts +1 -1
- package/types/workerManager.d.ts.map +1 -1
package/dist/index.cjs
CHANGED
|
@@ -66,6 +66,8 @@ var eIWMessageCommands = /* @__PURE__ */ function(eIWMessageCommands) {
|
|
|
66
66
|
eIWMessageCommands["GetRunnersResponse"] = "__STS__GetRunnersResponse";
|
|
67
67
|
eIWMessageCommands["PostWorkerMessage"] = "__STS__PostWorkerMessage";
|
|
68
68
|
eIWMessageCommands["PostWorkerMessageResponse"] = "__STS__PostWorkerMessageResponse";
|
|
69
|
+
eIWMessageCommands["PostWorkerPreTerminateMessage"] = "__STS__PostWorkerPreTerminateMessage";
|
|
70
|
+
eIWMessageCommands["PostWorkerPreTerminateMessageResponse"] = "__STS__PostWorkerPreTerminateMessageResponse";
|
|
69
71
|
return eIWMessageCommands;
|
|
70
72
|
}({});
|
|
71
73
|
var IRunnerState = /* @__PURE__ */ function(IRunnerState) {
|
|
@@ -1037,6 +1039,25 @@ var AbstractRunnerExecutionWorker = class {
|
|
|
1037
1039
|
this.#error(`#PostWorkerMessageToWorkerManager(): [${error}]`);
|
|
1038
1040
|
}
|
|
1039
1041
|
};
|
|
1042
|
+
#PostWorkerPreTerminateMessageToWorkerManager = async (messagePayload) => {
|
|
1043
|
+
try {
|
|
1044
|
+
if (this.#collectorCollectorPort) {
|
|
1045
|
+
const response = await this.ProcessPreTerminateWorkerMessage(messagePayload);
|
|
1046
|
+
const message = {
|
|
1047
|
+
command: eIWMessageCommands.PostWorkerMessageResponse,
|
|
1048
|
+
payload: {
|
|
1049
|
+
messageId: messagePayload.payload.messageId,
|
|
1050
|
+
workerId: this.#workerId,
|
|
1051
|
+
response
|
|
1052
|
+
}
|
|
1053
|
+
};
|
|
1054
|
+
this.#collectorCollectorPort.postMessage(message);
|
|
1055
|
+
await (0, _nsshunt_stsutils.Sleep)(0);
|
|
1056
|
+
}
|
|
1057
|
+
} catch (error) {
|
|
1058
|
+
this.#error(`#PostWorkerPreTerminateMessageToWorkerManager(): [${error}]`);
|
|
1059
|
+
}
|
|
1060
|
+
};
|
|
1040
1061
|
/**
|
|
1041
1062
|
* Start a runner and, if valid, launch its execution loop.
|
|
1042
1063
|
*
|
|
@@ -1420,6 +1441,9 @@ var AbstractRunnerExecutionWorker = class {
|
|
|
1420
1441
|
async ProcessGenericWorkerMessage(messagePayload) {
|
|
1421
1442
|
return {};
|
|
1422
1443
|
}
|
|
1444
|
+
async ProcessPreTerminateWorkerMessage(messagePayload) {
|
|
1445
|
+
return {};
|
|
1446
|
+
}
|
|
1423
1447
|
/**
|
|
1424
1448
|
* Main inbound message dispatcher for this worker runtime.
|
|
1425
1449
|
*
|
|
@@ -1503,6 +1527,10 @@ var AbstractRunnerExecutionWorker = class {
|
|
|
1503
1527
|
this.#silly(`ProcessMessage::PostWorkerMessage`);
|
|
1504
1528
|
this.#PostWorkerMessageToWorkerManager(payloadMessage);
|
|
1505
1529
|
break;
|
|
1530
|
+
case eIWMessageCommands.PostWorkerPreTerminateMessage:
|
|
1531
|
+
this.#silly(`ProcessMessage::PostWorkerPreTerminateMessage`);
|
|
1532
|
+
this.#PostWorkerPreTerminateMessageToWorkerManager(payloadMessage);
|
|
1533
|
+
break;
|
|
1506
1534
|
default: this.#warn(`ProcessMessage::default: Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
|
|
1507
1535
|
}
|
|
1508
1536
|
} catch (error) {
|
|
@@ -4486,13 +4514,24 @@ var WorkerInstance = class {
|
|
|
4486
4514
|
try {
|
|
4487
4515
|
const runners = this.GetAllRunnersEx();
|
|
4488
4516
|
const promArray = [];
|
|
4517
|
+
const microDelayForPreTerminate = 500;
|
|
4518
|
+
const microDelayForTerminate = 500;
|
|
4489
4519
|
for (let i = 0; i < runners.length; i++) promArray.push(runners[i].Terminate());
|
|
4490
4520
|
const retVal = Promise.all(promArray);
|
|
4491
|
-
if (this.worker)
|
|
4492
|
-
|
|
4493
|
-
this.#logger.debug(`
|
|
4494
|
-
this.#
|
|
4495
|
-
|
|
4521
|
+
if (this.worker) {
|
|
4522
|
+
await (0, _nsshunt_stsutils.Sleep)(microDelayForPreTerminate);
|
|
4523
|
+
this.#logger.debug(chalk.rgb(150, 170, 90)(`Terminate(): Sending Pre Terminate worker command ...`));
|
|
4524
|
+
const retValPreTerminate = await this.#messageBroker.SendMessageToWorkerForWorkerWithCallBack(this, eIWMessageCommands.PostWorkerPreTerminateMessage, {});
|
|
4525
|
+
this.#logger.debug(chalk.rgb(150, 170, 90)(`Terminate(): Pre Terminate worker response: [${JSON.stringify(retValPreTerminate, null, 2)}]`));
|
|
4526
|
+
}
|
|
4527
|
+
setTimeout(() => {
|
|
4528
|
+
if (this.worker) if (this.options.mocked === false) {
|
|
4529
|
+
this.worker.terminate();
|
|
4530
|
+
this.#logger.debug(`Terminate(): Terminated worker: [${this.id}]`);
|
|
4531
|
+
this.#workerRegistry.DeleteWorker(this.id);
|
|
4532
|
+
} else this.#logger.debug(`Terminate(): Terminated worker: [${this.id}] (Mocked)`);
|
|
4533
|
+
else this.#logger.warn(`Terminate(): Could not terminate worker: [${this.id}] - this.worker not set`);
|
|
4534
|
+
}, microDelayForTerminate);
|
|
4496
4535
|
return retVal;
|
|
4497
4536
|
} catch (error) {
|
|
4498
4537
|
this.#logger.error(`_TerminateWorker(): Error: [${error}]`);
|
|
@@ -6612,7 +6651,7 @@ var STSWorkerManager = class {
|
|
|
6612
6651
|
* - this does not automatically terminate all workers
|
|
6613
6652
|
* - callers should explicitly terminate workers first if desired
|
|
6614
6653
|
*/
|
|
6615
|
-
Terminate() {
|
|
6654
|
+
async Terminate() {
|
|
6616
6655
|
this.options.logger.debug(`STSWorkerManager:Terminate()`);
|
|
6617
6656
|
this.#archiveManager.Terminate();
|
|
6618
6657
|
}
|