@resolveio/server-lib 22.2.19 → 22.2.21
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/managers/error-auto-fix.manager.d.ts +5 -0
- package/managers/error-auto-fix.manager.js +145 -70
- package/managers/error-auto-fix.manager.js.map +1 -1
- package/managers/slow-query-verifier.manager.d.ts +8 -0
- package/managers/slow-query-verifier.manager.js +311 -194
- package/managers/slow-query-verifier.manager.js.map +1 -1
- package/managers/subscription.manager.d.ts +1 -0
- package/managers/subscription.manager.js +80 -34
- package/managers/subscription.manager.js.map +1 -1
- package/managers/worker-dispatcher.manager.js +60 -6
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/methods/app-settings.js +2 -2
- package/methods/app-settings.js.map +1 -1
- package/package.json +1 -1
- package/server-app.js +22 -36
- package/server-app.js.map +1 -1
|
@@ -122,6 +122,7 @@ export declare class SubscriptionManager {
|
|
|
122
122
|
private parsePositiveFloat;
|
|
123
123
|
private isChangeStreamUnsupported;
|
|
124
124
|
private isResumeTokenInvalid;
|
|
125
|
+
private isChangeStreamDocumentTooLarge;
|
|
125
126
|
private enableLocalOplogFallback;
|
|
126
127
|
getUseLocalOplog(): boolean;
|
|
127
128
|
handleMongoReconnect(reason: string): Promise<void>;
|
|
@@ -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) {
|
|
@@ -1533,6 +1536,21 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
1533
1536
|
}
|
|
1534
1537
|
return false;
|
|
1535
1538
|
};
|
|
1539
|
+
SubscriptionManager.prototype.isChangeStreamDocumentTooLarge = function (error) {
|
|
1540
|
+
var code = typeof (error === null || error === void 0 ? void 0 : error.code) === 'number' ? error.code : null;
|
|
1541
|
+
var codeName = typeof (error === null || error === void 0 ? void 0 : error.codeName) === 'string' ? error.codeName.toLowerCase() : '';
|
|
1542
|
+
var message = typeof (error === null || error === void 0 ? void 0 : error.message) === 'string' ? error.message.toLowerCase() : '';
|
|
1543
|
+
if (code === 10334) {
|
|
1544
|
+
return true;
|
|
1545
|
+
}
|
|
1546
|
+
if (codeName.includes('bsonobjecttoolarge')) {
|
|
1547
|
+
return true;
|
|
1548
|
+
}
|
|
1549
|
+
if (message.includes('bsonobj size') && message.includes('16mb')) {
|
|
1550
|
+
return true;
|
|
1551
|
+
}
|
|
1552
|
+
return false;
|
|
1553
|
+
};
|
|
1536
1554
|
SubscriptionManager.prototype.enableLocalOplogFallback = function (reason, error) {
|
|
1537
1555
|
return __awaiter(this, void 0, void 0, function () {
|
|
1538
1556
|
var _a, message;
|
|
@@ -1987,7 +2005,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
1987
2005
|
case 3:
|
|
1988
2006
|
// eslint-disable-next-line no-restricted-syntax
|
|
1989
2007
|
_a.sent();
|
|
1990
|
-
if (!(!this._oplog$ || this._oplog$.closed)) return [3 /*break*/,
|
|
2008
|
+
if (!(!this._oplog$ || this._oplog$.closed)) return [3 /*break*/, 27];
|
|
1991
2009
|
this._oplogRetryCount += 1;
|
|
1992
2010
|
if (this._oplogRetryCount > 5) {
|
|
1993
2011
|
console.error('****************** TAIL OPLOG ERROR, RETRYING A BUNCH OF TIMES, KILLING PROCESS **************************');
|
|
@@ -2018,14 +2036,14 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
2018
2036
|
},
|
|
2019
2037
|
];
|
|
2020
2038
|
startedWithResumeToken = false;
|
|
2021
|
-
if (!resumeToken) return [3 /*break*/,
|
|
2039
|
+
if (!resumeToken) return [3 /*break*/, 20];
|
|
2022
2040
|
lastResumeToken_1 = resumeToken;
|
|
2023
2041
|
_a.label = 4;
|
|
2024
2042
|
case 4:
|
|
2025
|
-
_a.trys.push([4, 5, ,
|
|
2043
|
+
_a.trys.push([4, 5, , 19]);
|
|
2026
2044
|
this._oplog$ = resolveio_server_app_1.ResolveIOServer.getMongoConnection().watch(pipeline, { resumeAfter: resumeToken, fullDocument: 'updateLookup' });
|
|
2027
2045
|
startedWithResumeToken = true;
|
|
2028
|
-
return [3 /*break*/,
|
|
2046
|
+
return [3 /*break*/, 19];
|
|
2029
2047
|
case 5:
|
|
2030
2048
|
error_8 = _a.sent();
|
|
2031
2049
|
if (!this.isChangeStreamUnsupported(error_8)) return [3 /*break*/, 7];
|
|
@@ -2034,49 +2052,66 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
2034
2052
|
_a.sent();
|
|
2035
2053
|
return [2 /*return*/];
|
|
2036
2054
|
case 7:
|
|
2037
|
-
if (!this.
|
|
2055
|
+
if (!this.isChangeStreamDocumentTooLarge(error_8)) return [3 /*break*/, 10];
|
|
2056
|
+
return [4 /*yield*/, this.clearResumeToken()];
|
|
2057
|
+
case 8:
|
|
2058
|
+
_a.sent();
|
|
2059
|
+
lastResumeToken_1 = null;
|
|
2060
|
+
this.queueFullResync('oplog-change-stream-document-too-large');
|
|
2061
|
+
return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-document-too-large', error_8)];
|
|
2062
|
+
case 9:
|
|
2063
|
+
_a.sent();
|
|
2064
|
+
return [2 /*return*/];
|
|
2065
|
+
case 10:
|
|
2066
|
+
if (!this._oplog$) return [3 /*break*/, 12];
|
|
2038
2067
|
this._oplog$.removeAllListeners();
|
|
2039
2068
|
return [4 /*yield*/, this._oplog$.close()];
|
|
2040
|
-
case
|
|
2069
|
+
case 11:
|
|
2041
2070
|
_a.sent();
|
|
2042
2071
|
this._oplog$ = null;
|
|
2043
|
-
_a.label =
|
|
2044
|
-
case
|
|
2045
|
-
case
|
|
2072
|
+
_a.label = 12;
|
|
2073
|
+
case 12: return [4 /*yield*/, this.clearResumeToken()];
|
|
2074
|
+
case 13:
|
|
2046
2075
|
_a.sent();
|
|
2047
2076
|
lastResumeToken_1 = null;
|
|
2048
2077
|
console.log(new Date(), 'oplog resumeAfter failed, starting fresh', error_8);
|
|
2049
|
-
_a.label =
|
|
2050
|
-
case
|
|
2051
|
-
_a.trys.push([
|
|
2078
|
+
_a.label = 14;
|
|
2079
|
+
case 14:
|
|
2080
|
+
_a.trys.push([14, 15, , 18]);
|
|
2052
2081
|
this._oplog$ = resolveio_server_app_1.ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });
|
|
2053
2082
|
startedWithResumeToken = false;
|
|
2054
|
-
return [3 /*break*/,
|
|
2055
|
-
case
|
|
2083
|
+
return [3 /*break*/, 18];
|
|
2084
|
+
case 15:
|
|
2056
2085
|
innerError_1 = _a.sent();
|
|
2057
|
-
if (!this.isChangeStreamUnsupported(innerError_1)) return [3 /*break*/,
|
|
2086
|
+
if (!this.isChangeStreamUnsupported(innerError_1)) return [3 /*break*/, 17];
|
|
2058
2087
|
return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', innerError_1)];
|
|
2059
|
-
case
|
|
2088
|
+
case 16:
|
|
2060
2089
|
_a.sent();
|
|
2061
2090
|
return [2 /*return*/];
|
|
2062
|
-
case
|
|
2063
|
-
case
|
|
2091
|
+
case 17: throw innerError_1;
|
|
2092
|
+
case 18:
|
|
2064
2093
|
this.queueFullResync('oplog-resumeAfter-failed');
|
|
2065
|
-
return [3 /*break*/,
|
|
2066
|
-
case
|
|
2067
|
-
case
|
|
2068
|
-
_a.trys.push([
|
|
2094
|
+
return [3 /*break*/, 19];
|
|
2095
|
+
case 19: return [3 /*break*/, 26];
|
|
2096
|
+
case 20:
|
|
2097
|
+
_a.trys.push([20, 21, , 26]);
|
|
2069
2098
|
this._oplog$ = resolveio_server_app_1.ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });
|
|
2070
|
-
return [3 /*break*/,
|
|
2071
|
-
case
|
|
2099
|
+
return [3 /*break*/, 26];
|
|
2100
|
+
case 21:
|
|
2072
2101
|
error_9 = _a.sent();
|
|
2073
|
-
if (!this.isChangeStreamUnsupported(error_9)) return [3 /*break*/,
|
|
2102
|
+
if (!this.isChangeStreamUnsupported(error_9)) return [3 /*break*/, 23];
|
|
2074
2103
|
return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-unsupported', error_9)];
|
|
2075
|
-
case
|
|
2104
|
+
case 22:
|
|
2076
2105
|
_a.sent();
|
|
2077
2106
|
return [2 /*return*/];
|
|
2078
|
-
case
|
|
2079
|
-
|
|
2107
|
+
case 23:
|
|
2108
|
+
if (!this.isChangeStreamDocumentTooLarge(error_9)) return [3 /*break*/, 25];
|
|
2109
|
+
return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-document-too-large', error_9)];
|
|
2110
|
+
case 24:
|
|
2111
|
+
_a.sent();
|
|
2112
|
+
return [2 /*return*/];
|
|
2113
|
+
case 25: throw error_9;
|
|
2114
|
+
case 26:
|
|
2080
2115
|
console.log(new Date(), 'oplog started', startedWithResumeToken ? '(resumeAfter)' : '');
|
|
2081
2116
|
this._oplog$.on('change', function (doc) { return __awaiter(_this, void 0, void 0, function () {
|
|
2082
2117
|
var collection, fullDocument, docId, flag, dependencyFlag;
|
|
@@ -2174,15 +2209,26 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
2174
2209
|
_a.sent();
|
|
2175
2210
|
return [2 /*return*/];
|
|
2176
2211
|
case 2:
|
|
2177
|
-
if (!this.
|
|
2212
|
+
if (!this.isChangeStreamDocumentTooLarge(error)) return [3 /*break*/, 5];
|
|
2178
2213
|
return [4 /*yield*/, this.clearResumeToken()];
|
|
2179
2214
|
case 3:
|
|
2180
2215
|
_a.sent();
|
|
2181
2216
|
lastResumeToken_1 = null;
|
|
2182
|
-
this.queueFullResync('oplog-
|
|
2183
|
-
|
|
2184
|
-
case 4:
|
|
2217
|
+
this.queueFullResync('oplog-change-stream-document-too-large');
|
|
2218
|
+
return [4 /*yield*/, this.enableLocalOplogFallback('change-stream-document-too-large', error)];
|
|
2219
|
+
case 4:
|
|
2220
|
+
_a.sent();
|
|
2221
|
+
return [2 /*return*/];
|
|
2185
2222
|
case 5:
|
|
2223
|
+
if (!this.isResumeTokenInvalid(error)) return [3 /*break*/, 7];
|
|
2224
|
+
return [4 /*yield*/, this.clearResumeToken()];
|
|
2225
|
+
case 6:
|
|
2226
|
+
_a.sent();
|
|
2227
|
+
lastResumeToken_1 = null;
|
|
2228
|
+
this.queueFullResync('oplog-resume-token-invalid');
|
|
2229
|
+
_a.label = 7;
|
|
2230
|
+
case 7: return [4 /*yield*/, this._oplog$.close()];
|
|
2231
|
+
case 8:
|
|
2186
2232
|
_a.sent();
|
|
2187
2233
|
return [2 /*return*/];
|
|
2188
2234
|
}
|
|
@@ -2215,8 +2261,8 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
2215
2261
|
}
|
|
2216
2262
|
});
|
|
2217
2263
|
}); });
|
|
2218
|
-
_a.label =
|
|
2219
|
-
case
|
|
2264
|
+
_a.label = 27;
|
|
2265
|
+
case 27: return [2 /*return*/];
|
|
2220
2266
|
}
|
|
2221
2267
|
});
|
|
2222
2268
|
});
|