@resolveio/server-lib 22.2.17 → 22.2.19

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.
@@ -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;
@@ -1578,6 +1578,42 @@ var SubscriptionManager = /** @class */ (function () {
1578
1578
  SubscriptionManager.prototype.getUseLocalOplog = function () {
1579
1579
  return this._useLocalOplog;
1580
1580
  };
1581
+ SubscriptionManager.prototype.handleMongoReconnect = function (reason) {
1582
+ return __awaiter(this, void 0, void 0, function () {
1583
+ var resumeToken, _a, error_3;
1584
+ return __generator(this, function (_b) {
1585
+ switch (_b.label) {
1586
+ case 0:
1587
+ if (this._useLocalOplog) {
1588
+ this.queueFullResync("mongo-reconnect:".concat(reason));
1589
+ return [2 /*return*/];
1590
+ }
1591
+ _b.label = 1;
1592
+ case 1:
1593
+ _b.trys.push([1, 5, , 6]);
1594
+ _a = this._lastResumeToken;
1595
+ if (_a) return [3 /*break*/, 3];
1596
+ return [4 /*yield*/, this.loadResumeToken()];
1597
+ case 2:
1598
+ _a = (_b.sent());
1599
+ _b.label = 3;
1600
+ case 3:
1601
+ resumeToken = _a;
1602
+ return [4 /*yield*/, this.tailOpLog(resumeToken || undefined)];
1603
+ case 4:
1604
+ _b.sent();
1605
+ return [3 /*break*/, 6];
1606
+ case 5:
1607
+ error_3 = _b.sent();
1608
+ console.log(new Date(), 'Sub Manager', 'Mongo reconnect: tailOpLog restart failed', reason, error_3);
1609
+ return [3 /*break*/, 6];
1610
+ case 6:
1611
+ this.queueFullResync("mongo-reconnect:".concat(reason));
1612
+ return [2 /*return*/];
1613
+ }
1614
+ });
1615
+ });
1616
+ };
1581
1617
  SubscriptionManager.prototype.notifyLocalOplog = function (collection, type) {
1582
1618
  var _this = this;
1583
1619
  if (type === void 0) { type = 'update'; }
@@ -1611,7 +1647,7 @@ var SubscriptionManager = /** @class */ (function () {
1611
1647
  };
1612
1648
  SubscriptionManager.prototype.loadResumeToken = function () {
1613
1649
  return __awaiter(this, void 0, void 0, function () {
1614
- var db_1, loadToken, mongoManager, _a, error_3;
1650
+ var db_1, loadToken, mongoManager, _a, error_4;
1615
1651
  var _this = this;
1616
1652
  return __generator(this, function (_b) {
1617
1653
  switch (_b.label) {
@@ -1659,8 +1695,8 @@ var SubscriptionManager = /** @class */ (function () {
1659
1695
  _b.label = 4;
1660
1696
  case 4: return [2 /*return*/, _a];
1661
1697
  case 5:
1662
- error_3 = _b.sent();
1663
- console.log(new Date(), 'Sub Manager', 'Failed to load oplog resume token', error_3);
1698
+ error_4 = _b.sent();
1699
+ console.log(new Date(), 'Sub Manager', 'Failed to load oplog resume token', error_4);
1664
1700
  return [2 /*return*/, null];
1665
1701
  case 6: return [2 /*return*/];
1666
1702
  }
@@ -1669,7 +1705,7 @@ var SubscriptionManager = /** @class */ (function () {
1669
1705
  };
1670
1706
  SubscriptionManager.prototype.saveResumeToken = function (token) {
1671
1707
  return __awaiter(this, void 0, void 0, function () {
1672
- var db_2, saveToken, mongoManager, error_4;
1708
+ var db_2, saveToken, mongoManager, error_5;
1673
1709
  var _this = this;
1674
1710
  return __generator(this, function (_a) {
1675
1711
  switch (_a.label) {
@@ -1706,8 +1742,8 @@ var SubscriptionManager = /** @class */ (function () {
1706
1742
  _a.label = 5;
1707
1743
  case 5: return [3 /*break*/, 7];
1708
1744
  case 6:
1709
- error_4 = _a.sent();
1710
- console.log(new Date(), 'Sub Manager', 'Failed to persist oplog resume token', error_4);
1745
+ error_5 = _a.sent();
1746
+ console.log(new Date(), 'Sub Manager', 'Failed to persist oplog resume token', error_5);
1711
1747
  return [3 /*break*/, 7];
1712
1748
  case 7: return [2 /*return*/];
1713
1749
  }
@@ -1716,7 +1752,7 @@ var SubscriptionManager = /** @class */ (function () {
1716
1752
  };
1717
1753
  SubscriptionManager.prototype.clearResumeToken = function () {
1718
1754
  return __awaiter(this, void 0, void 0, function () {
1719
- var db_3, clearToken, mongoManager, error_5;
1755
+ var db_3, clearToken, mongoManager, error_6;
1720
1756
  var _this = this;
1721
1757
  return __generator(this, function (_a) {
1722
1758
  switch (_a.label) {
@@ -1749,8 +1785,8 @@ var SubscriptionManager = /** @class */ (function () {
1749
1785
  _a.label = 4;
1750
1786
  case 4: return [3 /*break*/, 6];
1751
1787
  case 5:
1752
- error_5 = _a.sent();
1753
- console.log(new Date(), 'Sub Manager', 'Failed to clear oplog resume token', error_5);
1788
+ error_6 = _a.sent();
1789
+ console.log(new Date(), 'Sub Manager', 'Failed to clear oplog resume token', error_6);
1754
1790
  return [3 /*break*/, 6];
1755
1791
  case 6: return [2 /*return*/];
1756
1792
  }
@@ -1821,7 +1857,7 @@ var SubscriptionManager = /** @class */ (function () {
1821
1857
  };
1822
1858
  SubscriptionManager.prototype.fullResyncSubscriptions = function (reason) {
1823
1859
  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;
1860
+ var subs, subs_1, subs_1_1, sub, pub, _a, _b, client, ws, _c, e_4_1, e_5_1, error_7;
1825
1861
  var e_5, _d, e_4, _e;
1826
1862
  var _f, _g, _h, _j, _k;
1827
1863
  return __generator(this, function (_l) {
@@ -1919,8 +1955,8 @@ var SubscriptionManager = /** @class */ (function () {
1919
1955
  return [7 /*endfinally*/];
1920
1956
  case 19: return [3 /*break*/, 21];
1921
1957
  case 20:
1922
- error_6 = _l.sent();
1923
- console.log(new Date(), 'Sub Manager', 'Full resync failed', reason, error_6);
1958
+ error_7 = _l.sent();
1959
+ console.log(new Date(), 'Sub Manager', 'Full resync failed', reason, error_7);
1924
1960
  return [3 /*break*/, 21];
1925
1961
  case 21: return [2 /*return*/];
1926
1962
  }
@@ -1930,7 +1966,7 @@ var SubscriptionManager = /** @class */ (function () {
1930
1966
  // Watch (tail) Mongo's operation log on the entire database (all insert/modify/delete will trigger this function)
1931
1967
  SubscriptionManager.prototype.tailOpLog = function (resumeToken) {
1932
1968
  return __awaiter(this, void 0, void 0, function () {
1933
- var watchDatabases, pipeline, lastResumeToken_1, startedWithResumeToken, error_7, innerError_1, error_8;
1969
+ var watchDatabases, pipeline, lastResumeToken_1, startedWithResumeToken, error_8, innerError_1, error_9;
1934
1970
  var _this = this;
1935
1971
  return __generator(this, function (_a) {
1936
1972
  switch (_a.label) {
@@ -1991,9 +2027,9 @@ var SubscriptionManager = /** @class */ (function () {
1991
2027
  startedWithResumeToken = true;
1992
2028
  return [3 /*break*/, 16];
1993
2029
  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)];
2030
+ error_8 = _a.sent();
2031
+ if (!this.isChangeStreamUnsupported(error_8)) return [3 /*break*/, 7];
2032
+ return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_8)];
1997
2033
  case 6:
1998
2034
  _a.sent();
1999
2035
  return [2 /*return*/];
@@ -2009,7 +2045,7 @@ var SubscriptionManager = /** @class */ (function () {
2009
2045
  case 10:
2010
2046
  _a.sent();
2011
2047
  lastResumeToken_1 = null;
2012
- console.log(new Date(), 'oplog resumeAfter failed, starting fresh', error_7);
2048
+ console.log(new Date(), 'oplog resumeAfter failed, starting fresh', error_8);
2013
2049
  _a.label = 11;
2014
2050
  case 11:
2015
2051
  _a.trys.push([11, 12, , 15]);
@@ -2033,13 +2069,13 @@ var SubscriptionManager = /** @class */ (function () {
2033
2069
  this._oplog$ = resolveio_server_app_1.ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });
2034
2070
  return [3 /*break*/, 21];
2035
2071
  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)];
2072
+ error_9 = _a.sent();
2073
+ if (!this.isChangeStreamUnsupported(error_9)) return [3 /*break*/, 20];
2074
+ return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_9)];
2039
2075
  case 19:
2040
2076
  _a.sent();
2041
2077
  return [2 /*return*/];
2042
- case 20: throw error_8;
2078
+ case 20: throw error_9;
2043
2079
  case 21:
2044
2080
  console.log(new Date(), 'oplog started', startedWithResumeToken ? '(resumeAfter)' : '');
2045
2081
  this._oplog$.on('change', function (doc) { return __awaiter(_this, void 0, void 0, function () {