@cadenza.io/service 1.14.0 → 1.15.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
@@ -403,7 +403,7 @@ var ServiceRegistry = class _ServiceRegistry {
403
403
  }
404
404
  return true;
405
405
  },
406
- "Handles instance update from DB signal"
406
+ "Handles instance updates to service instances"
407
407
  ).emits("meta.service_registry.service_discovered").doOn(
408
408
  "meta.initializing_service",
409
409
  "CadenzaDB.meta.service_instance.inserted",
@@ -469,9 +469,16 @@ var ServiceRegistry = class _ServiceRegistry {
469
469
  const instances = serviceInstances == null ? void 0 : serviceInstances.filter(
470
470
  (i) => i.address === serviceAddress && i.port === servicePort
471
471
  );
472
+ console.log(
473
+ "Service not responding",
474
+ serviceAddress,
475
+ servicePort,
476
+ instances
477
+ );
472
478
  for (const instance of instances != null ? instances : []) {
473
479
  instance.isActive = false;
474
480
  instance.isNonResponsive = true;
481
+ instance.clientCreated = false;
475
482
  emit("meta.service_registry.service_not_responding", {
476
483
  data: {
477
484
  isActive: false,
@@ -485,7 +492,7 @@ var ServiceRegistry = class _ServiceRegistry {
485
492
  return true;
486
493
  },
487
494
  "Handles service not responding"
488
- ).doOn("meta.fetch.handshake_failed");
495
+ ).doOn("meta.fetch.handshake_failed", "meta.socket_client.disconnected");
489
496
  this.handleServiceHandshakeTask = CadenzaService.createMetaTask(
490
497
  "Handle service handshake",
491
498
  (ctx, emit) => {
@@ -503,8 +510,6 @@ var ServiceRegistry = class _ServiceRegistry {
503
510
  (i) => i.address === serviceAddress && i.port === servicePort
504
511
  );
505
512
  for (const instance of instances != null ? instances : []) {
506
- instance.isActive = serviceInstanceId === instance.uuid;
507
- instance.isNonResponsive = serviceInstanceId !== instance.uuid;
508
513
  emit("meta.service_registry.service_handshake", {
509
514
  data: {
510
515
  isActive: instance.isActive,
@@ -553,7 +558,7 @@ var ServiceRegistry = class _ServiceRegistry {
553
558
  "exposed",
554
559
  "created"
555
560
  ]
556
- }).doOn("meta.sync_requested").then(
561
+ }).doOn("meta.sync_requested").emits("meta.service_registry.synced_instances").then(
557
562
  CadenzaService.createMetaTask(
558
563
  "Split service instances",
559
564
  function* (ctx) {
@@ -1176,7 +1181,7 @@ var RestController = class _RestController {
1176
1181
  ).doAfter(CadenzaService.serviceRegistry.getStatusTask);
1177
1182
  CadenzaService.broker.emit(
1178
1183
  "meta.rest.status_check_requested",
1179
- req.query
1184
+ req.body.query
1180
1185
  );
1181
1186
  });
1182
1187
  return true;
@@ -1286,7 +1291,7 @@ var RestController = class _RestController {
1286
1291
  const URL = `${protocol}://${serviceAddress}:${port}`;
1287
1292
  const fetchId = `${serviceAddress}_${port}`;
1288
1293
  console.log("Fetch connecting to", URL);
1289
- CadenzaService.createMetaTask(
1294
+ const handshakeTask = CadenzaService.createMetaTask(
1290
1295
  `Send Handshake to ${URL}`,
1291
1296
  (ctx2, emit2) => __async(null, null, function* () {
1292
1297
  var _a2;
@@ -1303,6 +1308,7 @@ var RestController = class _RestController {
1303
1308
  if (result.__status !== "success") {
1304
1309
  const error = (_a2 = result.__error) != null ? _a2 : `Failed to connect to service ${serviceName} ${ctx2.serviceInstanceId}`;
1305
1310
  console.error(error);
1311
+ emit2(`meta.fetch.handshake_failed:${fetchId}`, result);
1306
1312
  return __spreadProps(__spreadValues({}, ctx2), { __error: error, errored: true });
1307
1313
  }
1308
1314
  ctx2.serviceInstanceId = result.__serviceInstanceId;
@@ -1319,8 +1325,8 @@ var RestController = class _RestController {
1319
1325
  return ctx2;
1320
1326
  }),
1321
1327
  "Sends handshake request"
1322
- ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete").emitsOnFail("meta.fetch.handshake_failed");
1323
- CadenzaService.createMetaTask(
1328
+ ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete");
1329
+ const delegateTask = CadenzaService.createMetaTask(
1324
1330
  `Delegate flow to REST server ${URL}`,
1325
1331
  (ctx2, emit2) => __async(null, null, function* () {
1326
1332
  if (ctx2.__remoteRoutineName === void 0) {
@@ -1355,7 +1361,7 @@ var RestController = class _RestController {
1355
1361
  `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
1356
1362
  `meta.service_registry.socket_failed:${fetchId}`
1357
1363
  ).emitsOnFail("meta.fetch.delegate_failed");
1358
- CadenzaService.createMetaTask(
1364
+ const transmitTask = CadenzaService.createMetaTask(
1359
1365
  `Transmit signal to server ${URL}`,
1360
1366
  (ctx2, emit2) => __async(null, null, function* () {
1361
1367
  if (ctx2.__signalName === void 0) {
@@ -1389,12 +1395,14 @@ var RestController = class _RestController {
1389
1395
  `meta.signal_controller.remote_signal_registered:${serviceName}`,
1390
1396
  "meta.signal_controller.wildcard_signal_registered"
1391
1397
  ).emitsOnFail("meta.fetch.signal_transmission_failed");
1392
- CadenzaService.createMetaTask(
1398
+ const statusTask = CadenzaService.createMetaTask(
1393
1399
  `Request status from ${URL}`,
1394
1400
  (ctx2) => __async(null, null, function* () {
1395
1401
  let status;
1396
1402
  try {
1397
- const response = yield (0, import_node_fetch.default)(`${URL}/status`, { method: "GET" });
1403
+ const response = yield (0, import_node_fetch.default)(`${URL}/status`, {
1404
+ method: "GET"
1405
+ });
1398
1406
  status = yield response.json();
1399
1407
  } catch (e) {
1400
1408
  status = __spreadValues({
@@ -1406,6 +1414,17 @@ var RestController = class _RestController {
1406
1414
  }),
1407
1415
  "Requests status"
1408
1416
  ).doOn("meta.fetch.status_check_requested").emits("meta.fetch.status_checked").emitsOnFail("meta.fetch.status_check_failed");
1417
+ CadenzaService.createEphemeralMetaTask("Destroy fetch client", (ctx2, emit2) => {
1418
+ console.log("Destroying fetch client");
1419
+ handshakeTask.destroy();
1420
+ delegateTask.destroy();
1421
+ transmitTask.destroy();
1422
+ statusTask.destroy();
1423
+ }).doOn(
1424
+ "meta.fetch.destroy_requested",
1425
+ `meta.socket_client.disconnected:${fetchId}`,
1426
+ `meta.fetch.handshake_failed:${fetchId}`
1427
+ ).emits("meta.fetch.destroyed");
1409
1428
  return true;
1410
1429
  },
1411
1430
  "Manages REST client requests as fallback"
@@ -1655,72 +1674,94 @@ var SocketController = class _SocketController {
1655
1674
  });
1656
1675
  socket.on("disconnect", () => {
1657
1676
  console.log("SocketClient: Disconnected", URL);
1658
- CadenzaService.broker.emit("meta.socket_client.disconnected", {
1659
- URL
1677
+ CadenzaService.broker.emit(`meta.socket_client.disconnected:${fetchId}`, {
1678
+ serviceName,
1679
+ serviceAddress,
1680
+ servicePort
1660
1681
  });
1661
1682
  });
1662
- CadenzaService.createMetaTask(
1683
+ const delegateTask = CadenzaService.createMetaTask(
1663
1684
  `Delegate flow to ${URL}`,
1664
1685
  (ctx2, emit) => __async(null, null, function* () {
1665
1686
  if (ctx2.__remoteRoutineName === void 0) {
1666
1687
  return;
1667
1688
  }
1668
- console.log("Socket Delegate:", ctx2);
1669
- socket.timeout(1e4).emit("delegation", ctx2, (err, resultContext) => {
1670
- if (err) {
1671
- console.log("socket error:", err);
1672
- resultContext = __spreadValues(__spreadValues({
1673
- __error: `Timeout error: ${err}`,
1674
- errored: true
1675
- }, ctx2), ctx2.__metadata);
1676
- emit(`meta.socket_client.delegate_failed`, resultContext);
1677
- return;
1678
- }
1679
- const metadata = resultContext.__metadata;
1680
- delete resultContext.__metadata;
1681
- emit(
1682
- `meta.socket_client.delegated:${ctx2.__metadata.__deputyExecId}`,
1683
- __spreadValues(__spreadValues({}, resultContext), metadata)
1689
+ return new Promise((resolve, reject) => {
1690
+ console.log("Socket Delegate:", ctx2);
1691
+ socket.timeout(1e4).emit(
1692
+ "delegation",
1693
+ ctx2,
1694
+ (err, resultContext) => {
1695
+ if (err) {
1696
+ console.log("socket error:", err);
1697
+ resultContext = __spreadValues(__spreadValues({
1698
+ __error: `Timeout error: ${err}`,
1699
+ errored: true
1700
+ }, ctx2), ctx2.__metadata);
1701
+ emit(`meta.socket_client.delegate_failed`, resultContext);
1702
+ resolve(resultContext);
1703
+ return;
1704
+ }
1705
+ const metadata = resultContext.__metadata;
1706
+ delete resultContext.__metadata;
1707
+ emit(
1708
+ `meta.socket_client.delegated:${ctx2.__metadata.__deputyExecId}`,
1709
+ __spreadValues(__spreadValues({}, resultContext), metadata)
1710
+ );
1711
+ resolve(resultContext);
1712
+ }
1684
1713
  );
1685
1714
  });
1686
1715
  }),
1687
1716
  `Delegate flow to service ${serviceName} with address ${URL}`
1688
1717
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1689
- CadenzaService.createMetaTask(
1718
+ const transmitTask = CadenzaService.createMetaTask(
1690
1719
  `Transmit signal to ${URL}`,
1691
1720
  (ctx2, emit) => __async(null, null, function* () {
1692
- var _a2;
1693
1721
  if (ctx2.__signalName === void 0) {
1694
1722
  return;
1695
1723
  }
1696
- socket.timeout((_a2 = ctx2.__timeout) != null ? _a2 : 1e4).emit("signal", ctx2, (err, response) => {
1697
- if (err) {
1698
- console.log("socket error:", err);
1699
- response = __spreadValues(__spreadValues({
1700
- __error: `Timeout error: ${err}`,
1701
- errored: true
1702
- }, ctx2), ctx2.__metadata);
1703
- emit(
1704
- `meta.socket_client.signal_transmission_failed`,
1705
- response
1706
- );
1707
- return;
1708
- }
1709
- if (ctx2.__routineExecId) {
1710
- emit(
1711
- `meta.socket_client.transmitted:${ctx2.__routineExecId}`,
1712
- response
1713
- );
1714
- }
1724
+ return new Promise((resolve, reject) => {
1725
+ var _a2;
1726
+ socket.timeout((_a2 = ctx2.__timeout) != null ? _a2 : 1e4).emit("signal", ctx2, (err, response) => {
1727
+ if (err) {
1728
+ console.log("socket error:", err);
1729
+ response = __spreadValues(__spreadValues({
1730
+ __error: `Timeout error: ${err}`,
1731
+ errored: true
1732
+ }, ctx2), ctx2.__metadata);
1733
+ emit(
1734
+ `meta.socket_client.signal_transmission_failed`,
1735
+ response
1736
+ );
1737
+ resolve(response);
1738
+ return;
1739
+ }
1740
+ if (ctx2.__routineExecId) {
1741
+ emit(
1742
+ `meta.socket_client.transmitted:${ctx2.__routineExecId}`,
1743
+ response
1744
+ );
1745
+ }
1746
+ resolve(response);
1747
+ });
1715
1748
  });
1716
1749
  }),
1717
1750
  `Transmits signal to service ${serviceName} with address ${URL}`
1718
1751
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1719
- CadenzaService.createMetaTask(
1752
+ CadenzaService.createEphemeralMetaTask(
1720
1753
  `Shutdown SocketClient ${URL}`,
1721
- () => socket.close(),
1754
+ () => {
1755
+ socket == null ? void 0 : socket.close();
1756
+ delegateTask.destroy();
1757
+ transmitTask.destroy();
1758
+ },
1722
1759
  "Shuts down the socket client"
1723
- ).doOn(`meta.socket_shutdown_requested:${fetchId}`).emits("meta.socket_client_shutdown_complete");
1760
+ ).doOn(
1761
+ `meta.socket_shutdown_requested:${fetchId}`,
1762
+ `meta.socket_client.disconnected:${fetchId}`,
1763
+ `meta.fetch.handshake_failed:${fetchId}`
1764
+ ).emits("meta.socket_client_shutdown_complete");
1724
1765
  return true;
1725
1766
  },
1726
1767
  "Connects to a specified socket server"
@@ -3116,8 +3157,7 @@ var GraphSyncController = class _GraphSyncController {
3116
3157
  }
3117
3158
  constructor() {
3118
3159
  var _a2;
3119
- (_a2 = CadenzaService.broker.getSignalsTask) == null ? void 0 : _a2.doOn("meta.sync_requested");
3120
- CadenzaService.registry.getAllTasks.doAfter(CadenzaService.broker.getSignalsTask);
3160
+ (_a2 = CadenzaService.broker.getSignalsTask) == null ? void 0 : _a2.doOn("meta.service_registry.synced_instances").then(CadenzaService.registry.getAllTasks.then(CadenzaService.registry.getAllRoutines));
3121
3161
  CadenzaService.createMetaTask("Split routines for registration", (ctx, emit) => {
3122
3162
  const { __routines } = ctx;
3123
3163
  if (!__routines) return;
@@ -3261,7 +3301,7 @@ var GraphSyncController = class _GraphSyncController {
3261
3301
  );
3262
3302
  }
3263
3303
  return true;
3264
- }).doAfter(CadenzaService.registry.getAllTasks).then(CadenzaService.registry.getAllRoutines);
3304
+ }).doAfter(CadenzaService.registry.getAllTasks);
3265
3305
  }
3266
3306
  };
3267
3307