@resolveio/server-lib 22.2.18 → 22.2.20

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.
Files changed (36) hide show
  1. package/managers/error-auto-fix.manager.d.ts +6 -0
  2. package/managers/error-auto-fix.manager.js +215 -85
  3. package/managers/error-auto-fix.manager.js.map +1 -1
  4. package/managers/method.manager.js +2 -0
  5. package/managers/method.manager.js.map +1 -1
  6. package/managers/mongo.manager.d.ts +3 -0
  7. package/managers/mongo.manager.js +184 -65
  8. package/managers/mongo.manager.js.map +1 -1
  9. package/managers/slow-query-verifier.manager.d.ts +30 -0
  10. package/managers/slow-query-verifier.manager.js +691 -192
  11. package/managers/slow-query-verifier.manager.js.map +1 -1
  12. package/managers/subscription.manager.d.ts +1 -0
  13. package/managers/subscription.manager.js +60 -21
  14. package/managers/subscription.manager.js.map +1 -1
  15. package/managers/worker-dispatcher.manager.js +60 -6
  16. package/managers/worker-dispatcher.manager.js.map +1 -1
  17. package/methods/ai-terminal.d.ts +4 -0
  18. package/methods/ai-terminal.js +64 -26
  19. package/methods/ai-terminal.js.map +1 -1
  20. package/methods/app-settings.js +2 -2
  21. package/methods/app-settings.js.map +1 -1
  22. package/methods/diagnostics.d.ts +2 -0
  23. package/methods/diagnostics.js +514 -0
  24. package/methods/diagnostics.js.map +1 -0
  25. package/methods.ts +15 -0
  26. package/package.json +1 -1
  27. package/resolveio-server-app.d.ts +17 -1
  28. package/resolveio-server-app.js +293 -25
  29. package/resolveio-server-app.js.map +1 -1
  30. package/server-app.js +22 -36
  31. package/server-app.js.map +1 -1
  32. package/util/error-reporter.js +26 -126
  33. package/util/error-reporter.js.map +1 -1
  34. package/util/slow-query-reporter.d.ts +0 -3
  35. package/util/slow-query-reporter.js +13 -120
  36. package/util/slow-query-reporter.js.map +1 -1
@@ -124,6 +124,7 @@ export declare class SubscriptionManager {
124
124
  private isResumeTokenInvalid;
125
125
  private enableLocalOplogFallback;
126
126
  getUseLocalOplog(): boolean;
127
+ handleMongoReconnect(reason: string): Promise<void>;
127
128
  notifyLocalOplog(collection: string, type?: string): void;
128
129
  private getResumeTokenDocId;
129
130
  private loadResumeToken;
@@ -674,6 +674,9 @@ var SubscriptionManager = /** @class */ (function () {
674
674
  if (!dispatcher || !dispatcher.hasWorkers()) {
675
675
  return false;
676
676
  }
677
+ if (typeof dispatcher.hasWorkersForMethod === 'function' && !dispatcher.hasWorkersForMethod('runPublication')) {
678
+ return false;
679
+ }
677
680
  if (this._publicationWorkerQueueLimit > 0) {
678
681
  var snapshot = dispatcher.getQueueSnapshot();
679
682
  if (snapshot.queueDepth >= this._publicationWorkerQueueLimit) {
@@ -1578,6 +1581,42 @@ var SubscriptionManager = /** @class */ (function () {
1578
1581
  SubscriptionManager.prototype.getUseLocalOplog = function () {
1579
1582
  return this._useLocalOplog;
1580
1583
  };
1584
+ SubscriptionManager.prototype.handleMongoReconnect = function (reason) {
1585
+ return __awaiter(this, void 0, void 0, function () {
1586
+ var resumeToken, _a, error_3;
1587
+ return __generator(this, function (_b) {
1588
+ switch (_b.label) {
1589
+ case 0:
1590
+ if (this._useLocalOplog) {
1591
+ this.queueFullResync("mongo-reconnect:".concat(reason));
1592
+ return [2 /*return*/];
1593
+ }
1594
+ _b.label = 1;
1595
+ case 1:
1596
+ _b.trys.push([1, 5, , 6]);
1597
+ _a = this._lastResumeToken;
1598
+ if (_a) return [3 /*break*/, 3];
1599
+ return [4 /*yield*/, this.loadResumeToken()];
1600
+ case 2:
1601
+ _a = (_b.sent());
1602
+ _b.label = 3;
1603
+ case 3:
1604
+ resumeToken = _a;
1605
+ return [4 /*yield*/, this.tailOpLog(resumeToken || undefined)];
1606
+ case 4:
1607
+ _b.sent();
1608
+ return [3 /*break*/, 6];
1609
+ case 5:
1610
+ error_3 = _b.sent();
1611
+ console.log(new Date(), 'Sub Manager', 'Mongo reconnect: tailOpLog restart failed', reason, error_3);
1612
+ return [3 /*break*/, 6];
1613
+ case 6:
1614
+ this.queueFullResync("mongo-reconnect:".concat(reason));
1615
+ return [2 /*return*/];
1616
+ }
1617
+ });
1618
+ });
1619
+ };
1581
1620
  SubscriptionManager.prototype.notifyLocalOplog = function (collection, type) {
1582
1621
  var _this = this;
1583
1622
  if (type === void 0) { type = 'update'; }
@@ -1611,7 +1650,7 @@ var SubscriptionManager = /** @class */ (function () {
1611
1650
  };
1612
1651
  SubscriptionManager.prototype.loadResumeToken = function () {
1613
1652
  return __awaiter(this, void 0, void 0, function () {
1614
- var db_1, loadToken, mongoManager, _a, error_3;
1653
+ var db_1, loadToken, mongoManager, _a, error_4;
1615
1654
  var _this = this;
1616
1655
  return __generator(this, function (_b) {
1617
1656
  switch (_b.label) {
@@ -1659,8 +1698,8 @@ var SubscriptionManager = /** @class */ (function () {
1659
1698
  _b.label = 4;
1660
1699
  case 4: return [2 /*return*/, _a];
1661
1700
  case 5:
1662
- error_3 = _b.sent();
1663
- console.log(new Date(), 'Sub Manager', 'Failed to load oplog resume token', error_3);
1701
+ error_4 = _b.sent();
1702
+ console.log(new Date(), 'Sub Manager', 'Failed to load oplog resume token', error_4);
1664
1703
  return [2 /*return*/, null];
1665
1704
  case 6: return [2 /*return*/];
1666
1705
  }
@@ -1669,7 +1708,7 @@ var SubscriptionManager = /** @class */ (function () {
1669
1708
  };
1670
1709
  SubscriptionManager.prototype.saveResumeToken = function (token) {
1671
1710
  return __awaiter(this, void 0, void 0, function () {
1672
- var db_2, saveToken, mongoManager, error_4;
1711
+ var db_2, saveToken, mongoManager, error_5;
1673
1712
  var _this = this;
1674
1713
  return __generator(this, function (_a) {
1675
1714
  switch (_a.label) {
@@ -1706,8 +1745,8 @@ var SubscriptionManager = /** @class */ (function () {
1706
1745
  _a.label = 5;
1707
1746
  case 5: return [3 /*break*/, 7];
1708
1747
  case 6:
1709
- error_4 = _a.sent();
1710
- console.log(new Date(), 'Sub Manager', 'Failed to persist oplog resume token', error_4);
1748
+ error_5 = _a.sent();
1749
+ console.log(new Date(), 'Sub Manager', 'Failed to persist oplog resume token', error_5);
1711
1750
  return [3 /*break*/, 7];
1712
1751
  case 7: return [2 /*return*/];
1713
1752
  }
@@ -1716,7 +1755,7 @@ var SubscriptionManager = /** @class */ (function () {
1716
1755
  };
1717
1756
  SubscriptionManager.prototype.clearResumeToken = function () {
1718
1757
  return __awaiter(this, void 0, void 0, function () {
1719
- var db_3, clearToken, mongoManager, error_5;
1758
+ var db_3, clearToken, mongoManager, error_6;
1720
1759
  var _this = this;
1721
1760
  return __generator(this, function (_a) {
1722
1761
  switch (_a.label) {
@@ -1749,8 +1788,8 @@ var SubscriptionManager = /** @class */ (function () {
1749
1788
  _a.label = 4;
1750
1789
  case 4: return [3 /*break*/, 6];
1751
1790
  case 5:
1752
- error_5 = _a.sent();
1753
- console.log(new Date(), 'Sub Manager', 'Failed to clear oplog resume token', error_5);
1791
+ error_6 = _a.sent();
1792
+ console.log(new Date(), 'Sub Manager', 'Failed to clear oplog resume token', error_6);
1754
1793
  return [3 /*break*/, 6];
1755
1794
  case 6: return [2 /*return*/];
1756
1795
  }
@@ -1821,7 +1860,7 @@ var SubscriptionManager = /** @class */ (function () {
1821
1860
  };
1822
1861
  SubscriptionManager.prototype.fullResyncSubscriptions = function (reason) {
1823
1862
  return __awaiter(this, void 0, void 0, function () {
1824
- var subs, subs_1, subs_1_1, sub, pub, _a, _b, client, ws, _c, e_4_1, e_5_1, error_6;
1863
+ var subs, subs_1, subs_1_1, sub, pub, _a, _b, client, ws, _c, e_4_1, e_5_1, error_7;
1825
1864
  var e_5, _d, e_4, _e;
1826
1865
  var _f, _g, _h, _j, _k;
1827
1866
  return __generator(this, function (_l) {
@@ -1919,8 +1958,8 @@ var SubscriptionManager = /** @class */ (function () {
1919
1958
  return [7 /*endfinally*/];
1920
1959
  case 19: return [3 /*break*/, 21];
1921
1960
  case 20:
1922
- error_6 = _l.sent();
1923
- console.log(new Date(), 'Sub Manager', 'Full resync failed', reason, error_6);
1961
+ error_7 = _l.sent();
1962
+ console.log(new Date(), 'Sub Manager', 'Full resync failed', reason, error_7);
1924
1963
  return [3 /*break*/, 21];
1925
1964
  case 21: return [2 /*return*/];
1926
1965
  }
@@ -1930,7 +1969,7 @@ var SubscriptionManager = /** @class */ (function () {
1930
1969
  // Watch (tail) Mongo's operation log on the entire database (all insert/modify/delete will trigger this function)
1931
1970
  SubscriptionManager.prototype.tailOpLog = function (resumeToken) {
1932
1971
  return __awaiter(this, void 0, void 0, function () {
1933
- var watchDatabases, pipeline, lastResumeToken_1, startedWithResumeToken, error_7, innerError_1, error_8;
1972
+ var watchDatabases, pipeline, lastResumeToken_1, startedWithResumeToken, error_8, innerError_1, error_9;
1934
1973
  var _this = this;
1935
1974
  return __generator(this, function (_a) {
1936
1975
  switch (_a.label) {
@@ -1991,9 +2030,9 @@ var SubscriptionManager = /** @class */ (function () {
1991
2030
  startedWithResumeToken = true;
1992
2031
  return [3 /*break*/, 16];
1993
2032
  case 5:
1994
- error_7 = _a.sent();
1995
- if (!this.isChangeStreamUnsupported(error_7)) return [3 /*break*/, 7];
1996
- return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_7)];
2033
+ error_8 = _a.sent();
2034
+ if (!this.isChangeStreamUnsupported(error_8)) return [3 /*break*/, 7];
2035
+ return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_8)];
1997
2036
  case 6:
1998
2037
  _a.sent();
1999
2038
  return [2 /*return*/];
@@ -2009,7 +2048,7 @@ var SubscriptionManager = /** @class */ (function () {
2009
2048
  case 10:
2010
2049
  _a.sent();
2011
2050
  lastResumeToken_1 = null;
2012
- console.log(new Date(), 'oplog resumeAfter failed, starting fresh', error_7);
2051
+ console.log(new Date(), 'oplog resumeAfter failed, starting fresh', error_8);
2013
2052
  _a.label = 11;
2014
2053
  case 11:
2015
2054
  _a.trys.push([11, 12, , 15]);
@@ -2033,13 +2072,13 @@ var SubscriptionManager = /** @class */ (function () {
2033
2072
  this._oplog$ = resolveio_server_app_1.ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });
2034
2073
  return [3 /*break*/, 21];
2035
2074
  case 18:
2036
- error_8 = _a.sent();
2037
- if (!this.isChangeStreamUnsupported(error_8)) return [3 /*break*/, 20];
2038
- return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_8)];
2075
+ error_9 = _a.sent();
2076
+ if (!this.isChangeStreamUnsupported(error_9)) return [3 /*break*/, 20];
2077
+ return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_9)];
2039
2078
  case 19:
2040
2079
  _a.sent();
2041
2080
  return [2 /*return*/];
2042
- case 20: throw error_8;
2081
+ case 20: throw error_9;
2043
2082
  case 21:
2044
2083
  console.log(new Date(), 'oplog started', startedWithResumeToken ? '(resumeAfter)' : '');
2045
2084
  this._oplog$.on('change', function (doc) { return __awaiter(_this, void 0, void 0, function () {