@resolveio/server-lib 22.2.42 → 22.2.44
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/managers/worker-dispatcher.manager.d.ts +2 -1
- package/managers/worker-dispatcher.manager.js +93 -53
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/managers/worker-server.manager.d.ts +19 -0
- package/managers/worker-server.manager.js +53 -1
- package/managers/worker-server.manager.js.map +1 -1
- package/methods/ai-terminal.js +2 -7
- package/methods/ai-terminal.js.map +1 -1
- package/methods/mongo-explorer.js +4 -7
- package/methods/mongo-explorer.js.map +1 -1
- package/methods/report-builder.js +2 -7
- package/methods/report-builder.js.map +1 -1
- package/models/support-ticket.model.d.ts +1 -1
- package/models/support-ticket.model.js.map +1 -1
- package/package.json +1 -1
- package/services/codex-client.d.ts +0 -1
- package/services/codex-client.js +0 -4
- package/services/codex-client.js.map +1 -1
|
@@ -56,7 +56,8 @@ export declare class WorkerDispatcherManager {
|
|
|
56
56
|
private getPublicationLogInfo;
|
|
57
57
|
isSafeShutdown(): boolean;
|
|
58
58
|
addWorker(ws: WebSocket.WebSocket): void;
|
|
59
|
-
|
|
59
|
+
private failActiveWorkerTask;
|
|
60
|
+
disconnectWorker(workerId: string, reason?: string): void;
|
|
60
61
|
hasWorkers(): boolean;
|
|
61
62
|
getQueueSnapshot(): {
|
|
62
63
|
queueDepth: number;
|
|
@@ -272,8 +272,61 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
272
272
|
this.dispatchQueue();
|
|
273
273
|
}
|
|
274
274
|
};
|
|
275
|
-
WorkerDispatcherManager.prototype.
|
|
275
|
+
WorkerDispatcherManager.prototype.failActiveWorkerTask = function (task, reason) {
|
|
276
|
+
var _a;
|
|
277
|
+
if (!task || !task.taskId) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
var pendingTask = this._pendingTasks.get(task.taskId);
|
|
281
|
+
if (pendingTask) {
|
|
282
|
+
clearTimeout(pendingTask.timeout);
|
|
283
|
+
if (pendingTask.promise) {
|
|
284
|
+
pendingTask.promise.reject(reason);
|
|
285
|
+
}
|
|
286
|
+
this._pendingTasks.delete(task.taskId);
|
|
287
|
+
}
|
|
288
|
+
this._taskTimings.delete(task.taskId);
|
|
289
|
+
if (this._clientRequests[task.taskId]) {
|
|
290
|
+
delete this._clientRequests[task.taskId];
|
|
291
|
+
}
|
|
292
|
+
if (!((_a = task.userContext) === null || _a === void 0 ? void 0 : _a.id_ws) || task.messageId === undefined || task.messageId === null) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
var clientWS = this._websocketManager ? this._websocketManager.getWebSocket(task.userContext.id_ws) : null;
|
|
296
|
+
if (!clientWS) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
var response = {
|
|
300
|
+
messageId: task.messageId,
|
|
301
|
+
hasError: true,
|
|
302
|
+
data: reason
|
|
303
|
+
};
|
|
304
|
+
this._websocketManager.send(clientWS, response);
|
|
305
|
+
};
|
|
306
|
+
WorkerDispatcherManager.prototype.disconnectWorker = function (workerId, reason) {
|
|
307
|
+
var e_4, _a;
|
|
308
|
+
var _b;
|
|
309
|
+
if (reason === void 0) { reason = 'Worker disconnected.'; }
|
|
310
|
+
var worker = this._workers.find(function (w) { return w.id === workerId; });
|
|
276
311
|
this._workers = this._workers.filter(function (w) { return w.id !== workerId; });
|
|
312
|
+
if (!worker || !((_b = worker.activeTasks) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
var activeTasks = __spreadArray([], __read(worker.activeTasks), false);
|
|
316
|
+
worker.activeTasks = [];
|
|
317
|
+
try {
|
|
318
|
+
for (var activeTasks_1 = __values(activeTasks), activeTasks_1_1 = activeTasks_1.next(); !activeTasks_1_1.done; activeTasks_1_1 = activeTasks_1.next()) {
|
|
319
|
+
var activeTask = activeTasks_1_1.value;
|
|
320
|
+
this.failActiveWorkerTask(activeTask, reason);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
324
|
+
finally {
|
|
325
|
+
try {
|
|
326
|
+
if (activeTasks_1_1 && !activeTasks_1_1.done && (_a = activeTasks_1.return)) _a.call(activeTasks_1);
|
|
327
|
+
}
|
|
328
|
+
finally { if (e_4) throw e_4.error; }
|
|
329
|
+
}
|
|
277
330
|
};
|
|
278
331
|
WorkerDispatcherManager.prototype.hasWorkers = function () {
|
|
279
332
|
return this._workers.length > 0;
|
|
@@ -545,7 +598,7 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
545
598
|
* The main loop that assigns tasks from _taskQueue to any worker that has capacity.
|
|
546
599
|
*/
|
|
547
600
|
WorkerDispatcherManager.prototype.dispatchQueue = function () {
|
|
548
|
-
var
|
|
601
|
+
var e_5, _a;
|
|
549
602
|
var _this = this;
|
|
550
603
|
if (!this._taskQueue.length) {
|
|
551
604
|
return;
|
|
@@ -576,7 +629,7 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
576
629
|
while (this._taskQueue.length > 0) {
|
|
577
630
|
var assigned = false;
|
|
578
631
|
try {
|
|
579
|
-
for (var priorityMatchers_1 = (
|
|
632
|
+
for (var priorityMatchers_1 = (e_5 = void 0, __values(priorityMatchers)), priorityMatchers_1_1 = priorityMatchers_1.next(); !priorityMatchers_1_1.done; priorityMatchers_1_1 = priorityMatchers_1.next()) {
|
|
580
633
|
var matcher = priorityMatchers_1_1.value;
|
|
581
634
|
if (tryAssignTask(matcher)) {
|
|
582
635
|
assigned = true;
|
|
@@ -584,12 +637,12 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
584
637
|
}
|
|
585
638
|
}
|
|
586
639
|
}
|
|
587
|
-
catch (
|
|
640
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
588
641
|
finally {
|
|
589
642
|
try {
|
|
590
643
|
if (priorityMatchers_1_1 && !priorityMatchers_1_1.done && (_a = priorityMatchers_1.return)) _a.call(priorityMatchers_1);
|
|
591
644
|
}
|
|
592
|
-
finally { if (
|
|
645
|
+
finally { if (e_5) throw e_5.error; }
|
|
593
646
|
}
|
|
594
647
|
if (!assigned) {
|
|
595
648
|
this.logNoWorkerAvailability();
|
|
@@ -871,17 +924,11 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
871
924
|
this.logWorkerEvent('workerTaskAssigned', logPayload);
|
|
872
925
|
}
|
|
873
926
|
var timeoutHandle = setTimeout(function () {
|
|
874
|
-
var pending = _this._pendingTasks.get(task.taskId);
|
|
875
927
|
var timeoutAt = Date.now();
|
|
876
928
|
var queuedAt = timing.queuedAt;
|
|
877
929
|
var queueWaitMs = queuedAt ? (0, common_1.round)(dispatchedAt - queuedAt) : null;
|
|
878
930
|
var dispatchToTimeoutMs = (0, common_1.round)(timeoutAt - dispatchedAt);
|
|
879
|
-
|
|
880
|
-
if (pending.promise) {
|
|
881
|
-
pending.promise.reject('Task timed out after 2m in WorkerDispatcherManager for method: ' + task.method);
|
|
882
|
-
}
|
|
883
|
-
_this._pendingTasks.delete(task.taskId);
|
|
884
|
-
}
|
|
931
|
+
var timeoutMessage = 'Task timed out after 2m in WorkerDispatcherManager for method: ' + task.method;
|
|
885
932
|
var publicationInfo = _this.getPublicationLogInfo(task.method, task.params);
|
|
886
933
|
var logPayload = {
|
|
887
934
|
taskId: task.taskId,
|
|
@@ -901,17 +948,18 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
901
948
|
Object.assign(logPayload, publicationInfo);
|
|
902
949
|
}
|
|
903
950
|
_this.logWorkerEvent('workerTaskTimeout', logPayload);
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
951
|
+
_this.disconnectWorker(worker.id, timeoutMessage);
|
|
952
|
+
if (worker.ws && worker.ws.readyState !== WebSocket.CLOSED) {
|
|
953
|
+
try {
|
|
954
|
+
worker.ws.close();
|
|
955
|
+
}
|
|
956
|
+
catch (_a) {
|
|
957
|
+
try {
|
|
958
|
+
worker.ws.terminate();
|
|
959
|
+
}
|
|
960
|
+
catch (_b) {
|
|
961
|
+
// Ignore socket cleanup errors after timeout.
|
|
962
|
+
}
|
|
915
963
|
}
|
|
916
964
|
}
|
|
917
965
|
}, method.timeoutOverride || (1000 * 60 * 2));
|
|
@@ -938,7 +986,7 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
938
986
|
}
|
|
939
987
|
};
|
|
940
988
|
WorkerDispatcherManager.prototype.logNoWorkerAvailability = function () {
|
|
941
|
-
var
|
|
989
|
+
var e_6, _a;
|
|
942
990
|
var _this = this;
|
|
943
991
|
if (!this.shouldDebug()) {
|
|
944
992
|
return;
|
|
@@ -981,12 +1029,12 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
981
1029
|
_loop_1(task);
|
|
982
1030
|
}
|
|
983
1031
|
}
|
|
984
|
-
catch (
|
|
1032
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
985
1033
|
finally {
|
|
986
1034
|
try {
|
|
987
1035
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
988
1036
|
}
|
|
989
|
-
finally { if (
|
|
1037
|
+
finally { if (e_6) throw e_6.error; }
|
|
990
1038
|
}
|
|
991
1039
|
};
|
|
992
1040
|
WorkerDispatcherManager.prototype.shouldDebug = function () {
|
|
@@ -1165,22 +1213,18 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
1165
1213
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
1166
1214
|
if (typeof payload !== 'string') {
|
|
1167
1215
|
var task_1 = payload;
|
|
1168
|
-
this.
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
ws.close();
|
|
1172
|
-
var pendingTask = this._pendingTasks.get(task_1.taskId);
|
|
1173
|
-
if (pendingTask) {
|
|
1174
|
-
clearTimeout(pendingTask.timeout);
|
|
1175
|
-
this._pendingTasks.delete(task_1.taskId);
|
|
1176
|
-
if (pendingTask.promise) {
|
|
1177
|
-
pendingTask.promise.reject('Worker socket not open.');
|
|
1178
|
-
}
|
|
1216
|
+
this.disconnectWorker(ws['id_worker'], 'Worker socket not open for method: ' + task_1.method);
|
|
1217
|
+
try {
|
|
1218
|
+
ws.close();
|
|
1179
1219
|
}
|
|
1220
|
+
catch (_a) { }
|
|
1180
1221
|
}
|
|
1181
1222
|
else {
|
|
1182
|
-
this.disconnectWorker(ws['id_worker']);
|
|
1183
|
-
|
|
1223
|
+
this.disconnectWorker(ws['id_worker'], 'Worker socket not open.');
|
|
1224
|
+
try {
|
|
1225
|
+
ws.close();
|
|
1226
|
+
}
|
|
1227
|
+
catch (_b) { }
|
|
1184
1228
|
}
|
|
1185
1229
|
return;
|
|
1186
1230
|
}
|
|
@@ -1189,8 +1233,11 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
1189
1233
|
ws.send(payload);
|
|
1190
1234
|
}
|
|
1191
1235
|
catch (err) {
|
|
1192
|
-
this.disconnectWorker(ws['id_worker']);
|
|
1193
|
-
|
|
1236
|
+
this.disconnectWorker(ws['id_worker'], 'Failed to send worker payload: ' + (err === null || err === void 0 ? void 0 : err.toString()));
|
|
1237
|
+
try {
|
|
1238
|
+
ws.close();
|
|
1239
|
+
}
|
|
1240
|
+
catch (_c) { }
|
|
1194
1241
|
console.error('Failed to send worker payload:', err);
|
|
1195
1242
|
}
|
|
1196
1243
|
return;
|
|
@@ -1201,22 +1248,15 @@ var WorkerDispatcherManager = /** @class */ (function () {
|
|
|
1201
1248
|
ws.send(payloadBuffer);
|
|
1202
1249
|
}
|
|
1203
1250
|
catch (err) {
|
|
1204
|
-
this._taskQueue.unshift(task);
|
|
1205
|
-
this.dispatchQueue();
|
|
1206
1251
|
if (this._methodManager.getEnableDebug()) {
|
|
1207
1252
|
console.log(new Date(), 'Sending to Server', task);
|
|
1208
1253
|
}
|
|
1209
|
-
this.disconnectWorker(ws['id_worker']);
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
var pendingTask = this._pendingTasks.get(task.taskId);
|
|
1213
|
-
if (pendingTask) {
|
|
1214
|
-
clearTimeout(pendingTask.timeout);
|
|
1215
|
-
this._pendingTasks.delete(task.taskId);
|
|
1216
|
-
if (pendingTask.promise) {
|
|
1217
|
-
pendingTask.promise.reject('Failed to send worker response: ' + (err === null || err === void 0 ? void 0 : err.toString()));
|
|
1218
|
-
}
|
|
1254
|
+
this.disconnectWorker(ws['id_worker'], 'Failed to send worker response for method: ' + task.method);
|
|
1255
|
+
try {
|
|
1256
|
+
ws.close();
|
|
1219
1257
|
}
|
|
1258
|
+
catch (_d) { }
|
|
1259
|
+
console.error('Failed to send worker response:', err);
|
|
1220
1260
|
}
|
|
1221
1261
|
};
|
|
1222
1262
|
return WorkerDispatcherManager;
|