@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.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 { uuid: uuid4, serviceName, address, port, exposed, isFrontend } = serviceInstance;
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("meta.service_registry.dependee_registered");
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("global.meta.service_registry.service_handshake");
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) => {
@@ -1256,7 +1300,7 @@ var RestController = class _RestController {
1256
1300
  CadenzaService.createMetaTask(
1257
1301
  "Configure network",
1258
1302
  async (ctx) => {
1259
- let address = "localhost";
1303
+ let address = "undefined";
1260
1304
  let port = ctx.__port;
1261
1305
  let exposed = false;
1262
1306
  const createHttpServer = async (ctx2) => {
@@ -1273,7 +1317,7 @@ var RestController = class _RestController {
1273
1317
  address = process.env.CADENZA_SERVER_URL || "localhost";
1274
1318
  }
1275
1319
  } else {
1276
- address = server?.address()?.address || "";
1320
+ address = server?.address()?.address || "undefined";
1277
1321
  }
1278
1322
  console.log(
1279
1323
  `Server is running on ${address}:${port}`
@@ -1560,7 +1604,7 @@ var RestController = class _RestController {
1560
1604
  transmitTask.destroy();
1561
1605
  statusTask.destroy();
1562
1606
  }).doOn(
1563
- "meta.fetch.destroy_requested",
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");