@cadenza.io/service 1.14.0 → 1.15.0

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",
@@ -472,6 +472,7 @@ var ServiceRegistry = class _ServiceRegistry {
472
472
  for (const instance of instances != null ? instances : []) {
473
473
  instance.isActive = false;
474
474
  instance.isNonResponsive = true;
475
+ instance.clientCreated = false;
475
476
  emit("meta.service_registry.service_not_responding", {
476
477
  data: {
477
478
  isActive: false,
@@ -485,7 +486,7 @@ var ServiceRegistry = class _ServiceRegistry {
485
486
  return true;
486
487
  },
487
488
  "Handles service not responding"
488
- ).doOn("meta.fetch.handshake_failed");
489
+ ).doOn("meta.fetch.handshake_failed", "meta.socket_client.disconnected");
489
490
  this.handleServiceHandshakeTask = CadenzaService.createMetaTask(
490
491
  "Handle service handshake",
491
492
  (ctx, emit) => {
@@ -503,8 +504,6 @@ var ServiceRegistry = class _ServiceRegistry {
503
504
  (i) => i.address === serviceAddress && i.port === servicePort
504
505
  );
505
506
  for (const instance of instances != null ? instances : []) {
506
- instance.isActive = serviceInstanceId === instance.uuid;
507
- instance.isNonResponsive = serviceInstanceId !== instance.uuid;
508
507
  emit("meta.service_registry.service_handshake", {
509
508
  data: {
510
509
  isActive: instance.isActive,
@@ -553,7 +552,7 @@ var ServiceRegistry = class _ServiceRegistry {
553
552
  "exposed",
554
553
  "created"
555
554
  ]
556
- }).doOn("meta.sync_requested").then(
555
+ }).doOn("meta.sync_requested").emits("meta.service_registry.synced_instances").then(
557
556
  CadenzaService.createMetaTask(
558
557
  "Split service instances",
559
558
  function* (ctx) {
@@ -1176,7 +1175,7 @@ var RestController = class _RestController {
1176
1175
  ).doAfter(CadenzaService.serviceRegistry.getStatusTask);
1177
1176
  CadenzaService.broker.emit(
1178
1177
  "meta.rest.status_check_requested",
1179
- req.query
1178
+ req.body.query
1180
1179
  );
1181
1180
  });
1182
1181
  return true;
@@ -1286,7 +1285,7 @@ var RestController = class _RestController {
1286
1285
  const URL = `${protocol}://${serviceAddress}:${port}`;
1287
1286
  const fetchId = `${serviceAddress}_${port}`;
1288
1287
  console.log("Fetch connecting to", URL);
1289
- CadenzaService.createMetaTask(
1288
+ const handshakeTask = CadenzaService.createMetaTask(
1290
1289
  `Send Handshake to ${URL}`,
1291
1290
  (ctx2, emit2) => __async(null, null, function* () {
1292
1291
  var _a2;
@@ -1303,6 +1302,7 @@ var RestController = class _RestController {
1303
1302
  if (result.__status !== "success") {
1304
1303
  const error = (_a2 = result.__error) != null ? _a2 : `Failed to connect to service ${serviceName} ${ctx2.serviceInstanceId}`;
1305
1304
  console.error(error);
1305
+ emit2(`meta.fetch.handshake_failed:${fetchId}`, result);
1306
1306
  return __spreadProps(__spreadValues({}, ctx2), { __error: error, errored: true });
1307
1307
  }
1308
1308
  ctx2.serviceInstanceId = result.__serviceInstanceId;
@@ -1319,8 +1319,8 @@ var RestController = class _RestController {
1319
1319
  return ctx2;
1320
1320
  }),
1321
1321
  "Sends handshake request"
1322
- ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete").emitsOnFail("meta.fetch.handshake_failed");
1323
- CadenzaService.createMetaTask(
1322
+ ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete");
1323
+ const delegateTask = CadenzaService.createMetaTask(
1324
1324
  `Delegate flow to REST server ${URL}`,
1325
1325
  (ctx2, emit2) => __async(null, null, function* () {
1326
1326
  if (ctx2.__remoteRoutineName === void 0) {
@@ -1355,7 +1355,7 @@ var RestController = class _RestController {
1355
1355
  `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
1356
1356
  `meta.service_registry.socket_failed:${fetchId}`
1357
1357
  ).emitsOnFail("meta.fetch.delegate_failed");
1358
- CadenzaService.createMetaTask(
1358
+ const transmitTask = CadenzaService.createMetaTask(
1359
1359
  `Transmit signal to server ${URL}`,
1360
1360
  (ctx2, emit2) => __async(null, null, function* () {
1361
1361
  if (ctx2.__signalName === void 0) {
@@ -1389,12 +1389,14 @@ var RestController = class _RestController {
1389
1389
  `meta.signal_controller.remote_signal_registered:${serviceName}`,
1390
1390
  "meta.signal_controller.wildcard_signal_registered"
1391
1391
  ).emitsOnFail("meta.fetch.signal_transmission_failed");
1392
- CadenzaService.createMetaTask(
1392
+ const statusTask = CadenzaService.createMetaTask(
1393
1393
  `Request status from ${URL}`,
1394
1394
  (ctx2) => __async(null, null, function* () {
1395
1395
  let status;
1396
1396
  try {
1397
- const response = yield (0, import_node_fetch.default)(`${URL}/status`, { method: "GET" });
1397
+ const response = yield (0, import_node_fetch.default)(`${URL}/status`, {
1398
+ method: "GET"
1399
+ });
1398
1400
  status = yield response.json();
1399
1401
  } catch (e) {
1400
1402
  status = __spreadValues({
@@ -1406,6 +1408,17 @@ var RestController = class _RestController {
1406
1408
  }),
1407
1409
  "Requests status"
1408
1410
  ).doOn("meta.fetch.status_check_requested").emits("meta.fetch.status_checked").emitsOnFail("meta.fetch.status_check_failed");
1411
+ CadenzaService.createEphemeralMetaTask("Destroy fetch client", (ctx2, emit2) => {
1412
+ console.log("Destroying fetch client");
1413
+ handshakeTask.destroy();
1414
+ delegateTask.destroy();
1415
+ transmitTask.destroy();
1416
+ statusTask.destroy();
1417
+ }).doOn(
1418
+ "meta.fetch.destroy_requested",
1419
+ `meta.socket_client.disconnected:${fetchId}`,
1420
+ `meta.fetch.handshake_failed:${fetchId}`
1421
+ ).emits("meta.fetch.destroyed");
1409
1422
  return true;
1410
1423
  },
1411
1424
  "Manages REST client requests as fallback"
@@ -1655,72 +1668,94 @@ var SocketController = class _SocketController {
1655
1668
  });
1656
1669
  socket.on("disconnect", () => {
1657
1670
  console.log("SocketClient: Disconnected", URL);
1658
- CadenzaService.broker.emit("meta.socket_client.disconnected", {
1659
- URL
1671
+ CadenzaService.broker.emit(`meta.socket_client.disconnected:${fetchId}`, {
1672
+ serviceName,
1673
+ serviceAddress,
1674
+ servicePort
1660
1675
  });
1661
1676
  });
1662
- CadenzaService.createMetaTask(
1677
+ const delegateTask = CadenzaService.createMetaTask(
1663
1678
  `Delegate flow to ${URL}`,
1664
1679
  (ctx2, emit) => __async(null, null, function* () {
1665
1680
  if (ctx2.__remoteRoutineName === void 0) {
1666
1681
  return;
1667
1682
  }
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)
1683
+ return new Promise((resolve, reject) => {
1684
+ console.log("Socket Delegate:", ctx2);
1685
+ socket.timeout(1e4).emit(
1686
+ "delegation",
1687
+ ctx2,
1688
+ (err, resultContext) => {
1689
+ if (err) {
1690
+ console.log("socket error:", err);
1691
+ resultContext = __spreadValues(__spreadValues({
1692
+ __error: `Timeout error: ${err}`,
1693
+ errored: true
1694
+ }, ctx2), ctx2.__metadata);
1695
+ emit(`meta.socket_client.delegate_failed`, resultContext);
1696
+ resolve(resultContext);
1697
+ return;
1698
+ }
1699
+ const metadata = resultContext.__metadata;
1700
+ delete resultContext.__metadata;
1701
+ emit(
1702
+ `meta.socket_client.delegated:${ctx2.__metadata.__deputyExecId}`,
1703
+ __spreadValues(__spreadValues({}, resultContext), metadata)
1704
+ );
1705
+ resolve(resultContext);
1706
+ }
1684
1707
  );
1685
1708
  });
1686
1709
  }),
1687
1710
  `Delegate flow to service ${serviceName} with address ${URL}`
1688
1711
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1689
- CadenzaService.createMetaTask(
1712
+ const transmitTask = CadenzaService.createMetaTask(
1690
1713
  `Transmit signal to ${URL}`,
1691
1714
  (ctx2, emit) => __async(null, null, function* () {
1692
- var _a2;
1693
1715
  if (ctx2.__signalName === void 0) {
1694
1716
  return;
1695
1717
  }
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
- }
1718
+ return new Promise((resolve, reject) => {
1719
+ var _a2;
1720
+ socket.timeout((_a2 = ctx2.__timeout) != null ? _a2 : 1e4).emit("signal", ctx2, (err, response) => {
1721
+ if (err) {
1722
+ console.log("socket error:", err);
1723
+ response = __spreadValues(__spreadValues({
1724
+ __error: `Timeout error: ${err}`,
1725
+ errored: true
1726
+ }, ctx2), ctx2.__metadata);
1727
+ emit(
1728
+ `meta.socket_client.signal_transmission_failed`,
1729
+ response
1730
+ );
1731
+ resolve(response);
1732
+ return;
1733
+ }
1734
+ if (ctx2.__routineExecId) {
1735
+ emit(
1736
+ `meta.socket_client.transmitted:${ctx2.__routineExecId}`,
1737
+ response
1738
+ );
1739
+ }
1740
+ resolve(response);
1741
+ });
1715
1742
  });
1716
1743
  }),
1717
1744
  `Transmits signal to service ${serviceName} with address ${URL}`
1718
1745
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1719
- CadenzaService.createMetaTask(
1746
+ CadenzaService.createEphemeralMetaTask(
1720
1747
  `Shutdown SocketClient ${URL}`,
1721
- () => socket.close(),
1748
+ () => {
1749
+ socket == null ? void 0 : socket.close();
1750
+ delegateTask.destroy();
1751
+ transmitTask.destroy();
1752
+ },
1722
1753
  "Shuts down the socket client"
1723
- ).doOn(`meta.socket_shutdown_requested:${fetchId}`).emits("meta.socket_client_shutdown_complete");
1754
+ ).doOn(
1755
+ `meta.socket_shutdown_requested:${fetchId}`,
1756
+ `meta.socket_client.disconnected:${fetchId}`,
1757
+ `meta.fetch.handshake_failed:${fetchId}`
1758
+ ).emits("meta.socket_client_shutdown_complete");
1724
1759
  return true;
1725
1760
  },
1726
1761
  "Connects to a specified socket server"
@@ -3116,8 +3151,7 @@ var GraphSyncController = class _GraphSyncController {
3116
3151
  }
3117
3152
  constructor() {
3118
3153
  var _a2;
3119
- (_a2 = CadenzaService.broker.getSignalsTask) == null ? void 0 : _a2.doOn("meta.sync_requested");
3120
- CadenzaService.registry.getAllTasks.doAfter(CadenzaService.broker.getSignalsTask);
3154
+ (_a2 = CadenzaService.broker.getSignalsTask) == null ? void 0 : _a2.doOn("meta.service_registry.synced_instances").then(CadenzaService.registry.getAllTasks.then(CadenzaService.registry.getAllRoutines));
3121
3155
  CadenzaService.createMetaTask("Split routines for registration", (ctx, emit) => {
3122
3156
  const { __routines } = ctx;
3123
3157
  if (!__routines) return;
@@ -3261,7 +3295,7 @@ var GraphSyncController = class _GraphSyncController {
3261
3295
  );
3262
3296
  }
3263
3297
  return true;
3264
- }).doAfter(CadenzaService.registry.getAllTasks).then(CadenzaService.registry.getAllRoutines);
3298
+ }).doAfter(CadenzaService.registry.getAllTasks);
3265
3299
  }
3266
3300
  };
3267
3301