@cadenza.io/service 2.3.0 → 2.3.2
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.js +83 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +83 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -318,8 +318,29 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
318
318
|
"Handle Instance Update",
|
|
319
319
|
(ctx, emit) => {
|
|
320
320
|
const { serviceInstance } = ctx;
|
|
321
|
-
const {
|
|
321
|
+
const {
|
|
322
|
+
uuid: uuid4,
|
|
323
|
+
serviceName,
|
|
324
|
+
address,
|
|
325
|
+
port,
|
|
326
|
+
exposed,
|
|
327
|
+
isFrontend,
|
|
328
|
+
deleted
|
|
329
|
+
} = serviceInstance;
|
|
322
330
|
if (uuid4 === this.serviceInstanceId) return;
|
|
331
|
+
if (deleted) {
|
|
332
|
+
this.instances.get(serviceName)?.splice(
|
|
333
|
+
this.instances.get(serviceName)?.findIndex((i) => i.uuid === uuid4) ?? -1,
|
|
334
|
+
1
|
|
335
|
+
);
|
|
336
|
+
if (this.instances.get(serviceName)?.length === 0) {
|
|
337
|
+
this.instances.delete(serviceName);
|
|
338
|
+
} else if (this.instances.get(serviceName)?.filter((i) => i.address === address && i.port === port).length === 0) {
|
|
339
|
+
emit(`meta.socket_shutdown_requested:${address}_${port}`, {});
|
|
340
|
+
emit(`meta.fetch.destroy_requested:${address}_${port}`, {});
|
|
341
|
+
}
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
323
344
|
if (!this.instances.has(serviceName))
|
|
324
345
|
this.instances.set(serviceName, []);
|
|
325
346
|
const instances = this.instances.get(serviceName);
|
|
@@ -370,7 +391,11 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
370
391
|
"meta.service_instance.inserted",
|
|
371
392
|
"meta.service_instance.updated",
|
|
372
393
|
"meta.socket_client.status_received"
|
|
373
|
-
).attachSignal(
|
|
394
|
+
).attachSignal(
|
|
395
|
+
"meta.service_registry.dependee_registered",
|
|
396
|
+
"meta.socket_shutdown_requested",
|
|
397
|
+
"meta.fetch.destroy_requested"
|
|
398
|
+
);
|
|
374
399
|
CadenzaService.createMetaTask("Split service instances", function* (ctx) {
|
|
375
400
|
if (!ctx.serviceInstances) {
|
|
376
401
|
return;
|
|
@@ -458,7 +483,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
458
483
|
this.handleServiceHandshakeTask = CadenzaService.createMetaTask(
|
|
459
484
|
"Handle service handshake",
|
|
460
485
|
(ctx, emit) => {
|
|
461
|
-
const { serviceName, serviceInstanceId } = ctx;
|
|
486
|
+
const { serviceName, serviceInstanceId, serviceAddress, servicePort } = ctx;
|
|
462
487
|
const serviceInstances = this.instances.get(serviceName);
|
|
463
488
|
const instance = serviceInstances?.find(
|
|
464
489
|
(i) => i.uuid === serviceInstanceId
|
|
@@ -477,10 +502,29 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
477
502
|
uuid: instance.uuid
|
|
478
503
|
}
|
|
479
504
|
});
|
|
505
|
+
const instancesToDelete = serviceInstances?.filter(
|
|
506
|
+
(i) => i.uuid !== serviceInstanceId && i.address === serviceAddress && i.port === servicePort
|
|
507
|
+
);
|
|
508
|
+
for (const i of instancesToDelete ?? []) {
|
|
509
|
+
this.instances.get(serviceName)?.splice(this.instances.get(serviceName)?.indexOf(i) ?? -1, 1);
|
|
510
|
+
emit("global.meta.service_registry.deleted", {
|
|
511
|
+
data: {
|
|
512
|
+
isActive: false,
|
|
513
|
+
isNonResponsive: false,
|
|
514
|
+
deleted: true
|
|
515
|
+
},
|
|
516
|
+
filter: {
|
|
517
|
+
uuid: i.uuid
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
}
|
|
480
521
|
return true;
|
|
481
522
|
},
|
|
482
523
|
"Handles service handshake"
|
|
483
|
-
).doOn("meta.fetch.handshake_complete").attachSignal(
|
|
524
|
+
).doOn("meta.fetch.handshake_complete").attachSignal(
|
|
525
|
+
"global.meta.service_registry.service_handshake",
|
|
526
|
+
"global.meta.service_registry.deleted"
|
|
527
|
+
);
|
|
484
528
|
this.handleSocketStatusUpdateTask = CadenzaService.createMetaTask(
|
|
485
529
|
"Handle Socket Status Update",
|
|
486
530
|
(ctx) => {
|
|
@@ -1560,7 +1604,7 @@ var RestController = class _RestController {
|
|
|
1560
1604
|
transmitTask.destroy();
|
|
1561
1605
|
statusTask.destroy();
|
|
1562
1606
|
}).doOn(
|
|
1563
|
-
|
|
1607
|
+
`meta.fetch.destroy_requested:${fetchId}`,
|
|
1564
1608
|
`meta.socket_client.disconnected:${fetchId}`,
|
|
1565
1609
|
`meta.fetch.handshake_failed:${fetchId}`
|
|
1566
1610
|
).emits("meta.fetch.destroyed");
|
|
@@ -1855,12 +1899,23 @@ var SocketController = class _SocketController {
|
|
|
1855
1899
|
CadenzaService.createMetaTask(
|
|
1856
1900
|
"Connect to socket server",
|
|
1857
1901
|
(ctx) => {
|
|
1858
|
-
const {
|
|
1902
|
+
const {
|
|
1903
|
+
serviceInstanceId,
|
|
1904
|
+
communicationTypes,
|
|
1905
|
+
serviceName,
|
|
1906
|
+
serviceAddress,
|
|
1907
|
+
servicePort,
|
|
1908
|
+
protocol
|
|
1909
|
+
} = ctx;
|
|
1859
1910
|
const socketProtocol = protocol === "https" ? "wss" : "ws";
|
|
1860
1911
|
const port = protocol === "https" ? 443 : servicePort;
|
|
1861
1912
|
const URL = `${socketProtocol}://${serviceAddress}:${port}`;
|
|
1862
1913
|
const fetchId = `${serviceAddress}_${port}`;
|
|
1863
1914
|
let handshake = false;
|
|
1915
|
+
if (CadenzaService.get(`Socket handshake with ${URL}`)) {
|
|
1916
|
+
console.error("Socket client already exists", URL);
|
|
1917
|
+
return;
|
|
1918
|
+
}
|
|
1864
1919
|
const socket = (0, import_socket2.io)(URL, {
|
|
1865
1920
|
reconnection: true,
|
|
1866
1921
|
reconnectionAttempts: 5,
|
|
@@ -1948,7 +2003,7 @@ var SocketController = class _SocketController {
|
|
|
1948
2003
|
{ error: err.message, serviceName, socketId: socket.id, URL },
|
|
1949
2004
|
"error"
|
|
1950
2005
|
);
|
|
1951
|
-
CadenzaService.emit(
|
|
2006
|
+
CadenzaService.emit(`meta.socket_client.connect_error:${fetchId}`, err);
|
|
1952
2007
|
});
|
|
1953
2008
|
socket.on("reconnect_attempt", (attempt) => {
|
|
1954
2009
|
CadenzaService.log(`Reconnect attempt: ${attempt}`);
|
|
@@ -1989,8 +2044,8 @@ var SocketController = class _SocketController {
|
|
|
1989
2044
|
handshake = false;
|
|
1990
2045
|
});
|
|
1991
2046
|
socket.connect();
|
|
1992
|
-
CadenzaService.
|
|
1993
|
-
`
|
|
2047
|
+
const handshakeTask = CadenzaService.createMetaTask(
|
|
2048
|
+
`Socket handshake with ${URL}`,
|
|
1994
2049
|
async () => {
|
|
1995
2050
|
if (handshake) return;
|
|
1996
2051
|
handshake = true;
|
|
@@ -2024,7 +2079,7 @@ var SocketController = class _SocketController {
|
|
|
2024
2079
|
"Handshakes with socket server"
|
|
2025
2080
|
).doOn(`meta.socket_client.connected:${fetchId}`);
|
|
2026
2081
|
const delegateTask = CadenzaService.createMetaTask(
|
|
2027
|
-
`Delegate flow to ${URL}`,
|
|
2082
|
+
`Delegate flow to Socket service ${URL}`,
|
|
2028
2083
|
async (ctx2, emit) => {
|
|
2029
2084
|
if (ctx2.__remoteRoutineName === void 0) {
|
|
2030
2085
|
return;
|
|
@@ -2057,7 +2112,7 @@ var SocketController = class _SocketController {
|
|
|
2057
2112
|
`Delegate flow to service ${serviceName} with address ${URL}`
|
|
2058
2113
|
).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal("meta.socket_client.delegated");
|
|
2059
2114
|
const transmitTask = CadenzaService.createMetaTask(
|
|
2060
|
-
`Transmit signal to ${URL}`,
|
|
2115
|
+
`Transmit signal to socket server ${URL}`,
|
|
2061
2116
|
async (ctx2, emit) => {
|
|
2062
2117
|
if (ctx2.__signalName === void 0) {
|
|
2063
2118
|
return;
|
|
@@ -2079,16 +2134,31 @@ var SocketController = class _SocketController {
|
|
|
2079
2134
|
).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal("meta.socket_client.transmitted");
|
|
2080
2135
|
CadenzaService.createEphemeralMetaTask(
|
|
2081
2136
|
`Shutdown SocketClient ${URL}`,
|
|
2082
|
-
() => {
|
|
2137
|
+
(ctx2, emit) => {
|
|
2138
|
+
CadenzaService.log("Shutting down socket client", { URL, serviceName });
|
|
2083
2139
|
socket?.close();
|
|
2140
|
+
handshakeTask.destroy();
|
|
2084
2141
|
delegateTask.destroy();
|
|
2085
2142
|
transmitTask.destroy();
|
|
2143
|
+
emit(`meta.fetch.handshake_requested:${fetchId}`, {
|
|
2144
|
+
serviceInstanceId,
|
|
2145
|
+
serviceName,
|
|
2146
|
+
communicationTypes,
|
|
2147
|
+
serviceAddress,
|
|
2148
|
+
servicePort,
|
|
2149
|
+
protocol,
|
|
2150
|
+
handshakeData: {
|
|
2151
|
+
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
2152
|
+
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
2153
|
+
}
|
|
2154
|
+
});
|
|
2086
2155
|
},
|
|
2087
2156
|
"Shuts down the socket client"
|
|
2088
2157
|
).doOn(
|
|
2089
2158
|
`meta.socket_shutdown_requested:${fetchId}`,
|
|
2090
2159
|
`meta.socket_client.disconnected:${fetchId}`,
|
|
2091
|
-
`meta.fetch.handshake_failed:${fetchId}
|
|
2160
|
+
`meta.fetch.handshake_failed:${fetchId}`,
|
|
2161
|
+
`meta.socket_client.connect_error:${fetchId}`
|
|
2092
2162
|
).emits("meta.socket_client_shutdown_complete");
|
|
2093
2163
|
return true;
|
|
2094
2164
|
},
|