@cadenza.io/service 2.2.4 → 2.3.1

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.mjs CHANGED
@@ -270,8 +270,29 @@ var ServiceRegistry = class _ServiceRegistry {
270
270
  "Handle Instance Update",
271
271
  (ctx, emit) => {
272
272
  const { serviceInstance } = ctx;
273
- const { uuid: uuid4, serviceName, address, port, exposed, isFrontend } = serviceInstance;
273
+ const {
274
+ uuid: uuid4,
275
+ serviceName,
276
+ address,
277
+ port,
278
+ exposed,
279
+ isFrontend,
280
+ deleted
281
+ } = serviceInstance;
274
282
  if (uuid4 === this.serviceInstanceId) return;
283
+ if (deleted) {
284
+ this.instances.get(serviceName)?.splice(
285
+ this.instances.get(serviceName)?.findIndex((i) => i.uuid === uuid4) ?? -1,
286
+ 1
287
+ );
288
+ if (this.instances.get(serviceName)?.length === 0) {
289
+ this.instances.delete(serviceName);
290
+ } else if (this.instances.get(serviceName)?.filter((i) => i.address === address && i.port === port).length === 0) {
291
+ emit(`meta.socket_shutdown_requested:${address}_${port}`, {});
292
+ emit(`meta.fetch.destroy_requested:${address}_${port}`, {});
293
+ }
294
+ return;
295
+ }
275
296
  if (!this.instances.has(serviceName))
276
297
  this.instances.set(serviceName, []);
277
298
  const instances = this.instances.get(serviceName);
@@ -322,7 +343,11 @@ var ServiceRegistry = class _ServiceRegistry {
322
343
  "meta.service_instance.inserted",
323
344
  "meta.service_instance.updated",
324
345
  "meta.socket_client.status_received"
325
- ).attachSignal("meta.service_registry.dependee_registered");
346
+ ).attachSignal(
347
+ "meta.service_registry.dependee_registered",
348
+ "meta.socket_shutdown_requested",
349
+ "meta.fetch.destroy_requested"
350
+ );
326
351
  CadenzaService.createMetaTask("Split service instances", function* (ctx) {
327
352
  if (!ctx.serviceInstances) {
328
353
  return;
@@ -410,7 +435,7 @@ var ServiceRegistry = class _ServiceRegistry {
410
435
  this.handleServiceHandshakeTask = CadenzaService.createMetaTask(
411
436
  "Handle service handshake",
412
437
  (ctx, emit) => {
413
- const { serviceName, serviceInstanceId } = ctx;
438
+ const { serviceName, serviceInstanceId, serviceAddress, servicePort } = ctx;
414
439
  const serviceInstances = this.instances.get(serviceName);
415
440
  const instance = serviceInstances?.find(
416
441
  (i) => i.uuid === serviceInstanceId
@@ -429,10 +454,29 @@ var ServiceRegistry = class _ServiceRegistry {
429
454
  uuid: instance.uuid
430
455
  }
431
456
  });
457
+ const instancesToDelete = serviceInstances?.filter(
458
+ (i) => i.uuid !== serviceInstanceId && i.address === serviceAddress && i.port === servicePort
459
+ );
460
+ for (const i of instancesToDelete ?? []) {
461
+ this.instances.get(serviceName)?.splice(this.instances.get(serviceName)?.indexOf(i) ?? -1, 1);
462
+ emit("global.meta.service_registry.deleted", {
463
+ data: {
464
+ isActive: false,
465
+ isNonResponsive: false,
466
+ deleted: true
467
+ },
468
+ filter: {
469
+ uuid: i.uuid
470
+ }
471
+ });
472
+ }
432
473
  return true;
433
474
  },
434
475
  "Handles service handshake"
435
- ).doOn("meta.fetch.handshake_complete").attachSignal("global.meta.service_registry.service_handshake");
476
+ ).doOn("meta.fetch.handshake_complete").attachSignal(
477
+ "global.meta.service_registry.service_handshake",
478
+ "global.meta.service_registry.deleted"
479
+ );
436
480
  this.handleSocketStatusUpdateTask = CadenzaService.createMetaTask(
437
481
  "Handle Socket Status Update",
438
482
  (ctx) => {
@@ -1208,7 +1252,7 @@ var RestController = class _RestController {
1208
1252
  CadenzaService.createMetaTask(
1209
1253
  "Configure network",
1210
1254
  async (ctx) => {
1211
- let address = "localhost";
1255
+ let address = "undefined";
1212
1256
  let port = ctx.__port;
1213
1257
  let exposed = false;
1214
1258
  const createHttpServer = async (ctx2) => {
@@ -1225,7 +1269,7 @@ var RestController = class _RestController {
1225
1269
  address = process.env.CADENZA_SERVER_URL || "localhost";
1226
1270
  }
1227
1271
  } else {
1228
- address = server?.address()?.address || "";
1272
+ address = server?.address()?.address || "undefined";
1229
1273
  }
1230
1274
  console.log(
1231
1275
  `Server is running on ${address}:${port}`
@@ -1512,7 +1556,7 @@ var RestController = class _RestController {
1512
1556
  transmitTask.destroy();
1513
1557
  statusTask.destroy();
1514
1558
  }).doOn(
1515
- "meta.fetch.destroy_requested",
1559
+ `meta.fetch.destroy_requested:${fetchId}`,
1516
1560
  `meta.socket_client.disconnected:${fetchId}`,
1517
1561
  `meta.fetch.handshake_failed:${fetchId}`
1518
1562
  ).emits("meta.fetch.destroyed");