@adaptic/backend-legacy 0.0.903 → 0.0.905
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/ABTest.cjs +291 -63
- package/Account.cjs +291 -63
- package/AccountLinkingRequest.cjs +291 -63
- package/Action.cjs +291 -63
- package/Alert.cjs +291 -63
- package/Allocation.cjs +291 -63
- package/AlpacaAccount.cjs +291 -63
- package/AnalyticsConfiguration.cjs +291 -63
- package/AnalyticsSnapshot.cjs +291 -63
- package/Asset.cjs +291 -63
- package/AuditLog.cjs +291 -63
- package/Authenticator.cjs +291 -63
- package/Configuration.cjs +291 -63
- package/ConflictEvent.cjs +291 -63
- package/ConnectionHealthSnapshot.cjs +291 -63
- package/Customer.cjs +291 -63
- package/DeadLetterMessage.cjs +291 -63
- package/EconomicEvent.cjs +291 -63
- package/Event.cjs +291 -63
- package/EventSnapshot.cjs +291 -63
- package/FeatureImportanceAnalysis.cjs +291 -63
- package/InstitutionalFlowSignal.cjs +291 -63
- package/InstitutionalHolding.cjs +291 -63
- package/InstitutionalSentimentAlerts.cjs +291 -63
- package/InstitutionalSentimentErrors.cjs +291 -63
- package/InstitutionalSentimentHistory.cjs +291 -63
- package/InstitutionalSentimentMetrics.cjs +291 -63
- package/InviteToken.cjs +291 -63
- package/LinkedProvider.cjs +291 -63
- package/MLTrainingData.cjs +291 -63
- package/MarketSentiment.cjs +291 -63
- package/ModelArtifact.cjs +291 -63
- package/ModelVersion.cjs +291 -63
- package/ModelVersionArtifact.cjs +291 -63
- package/NewsArticle.cjs +291 -63
- package/NewsArticleAssetSentiment.cjs +291 -63
- package/OptionsContract.cjs +291 -63
- package/OptionsGreeksHistory.cjs +291 -63
- package/OptionsPosition.cjs +291 -63
- package/OptionsTradeExecution.cjs +291 -63
- package/PortfolioGreeksHistory.cjs +291 -63
- package/ScheduledOptionOrder.cjs +291 -63
- package/Session.cjs +291 -63
- package/SignalGeneratorMetrics.cjs +291 -63
- package/SignalLineage.cjs +291 -63
- package/SignalOutcome.cjs +291 -63
- package/SignalPriorityQueue.cjs +291 -63
- package/SyncEvent.cjs +291 -63
- package/SystemAlert.cjs +291 -63
- package/Trade.cjs +291 -63
- package/TradeAuditEvent.cjs +291 -63
- package/TradeExecutionHistory.cjs +291 -63
- package/User.cjs +291 -63
- package/VerificationToken.cjs +291 -63
- package/WaitlistEntry.cjs +291 -63
- package/esm/ABTest.d.ts.map +1 -1
- package/esm/ABTest.js.map +1 -1
- package/esm/ABTest.mjs +255 -27
- package/esm/Account.d.ts.map +1 -1
- package/esm/Account.js.map +1 -1
- package/esm/Account.mjs +255 -27
- package/esm/AccountLinkingRequest.d.ts.map +1 -1
- package/esm/AccountLinkingRequest.js.map +1 -1
- package/esm/AccountLinkingRequest.mjs +255 -27
- package/esm/Action.d.ts.map +1 -1
- package/esm/Action.js.map +1 -1
- package/esm/Action.mjs +255 -27
- package/esm/Alert.d.ts.map +1 -1
- package/esm/Alert.js.map +1 -1
- package/esm/Alert.mjs +255 -27
- package/esm/Allocation.d.ts.map +1 -1
- package/esm/Allocation.js.map +1 -1
- package/esm/Allocation.mjs +255 -27
- package/esm/AlpacaAccount.d.ts.map +1 -1
- package/esm/AlpacaAccount.js.map +1 -1
- package/esm/AlpacaAccount.mjs +255 -27
- package/esm/AnalyticsConfiguration.d.ts.map +1 -1
- package/esm/AnalyticsConfiguration.js.map +1 -1
- package/esm/AnalyticsConfiguration.mjs +255 -27
- package/esm/AnalyticsSnapshot.d.ts.map +1 -1
- package/esm/AnalyticsSnapshot.js.map +1 -1
- package/esm/AnalyticsSnapshot.mjs +255 -27
- package/esm/Asset.d.ts.map +1 -1
- package/esm/Asset.js.map +1 -1
- package/esm/Asset.mjs +255 -27
- package/esm/AuditLog.d.ts.map +1 -1
- package/esm/AuditLog.js.map +1 -1
- package/esm/AuditLog.mjs +255 -27
- package/esm/Authenticator.d.ts.map +1 -1
- package/esm/Authenticator.js.map +1 -1
- package/esm/Authenticator.mjs +255 -27
- package/esm/Configuration.d.ts.map +1 -1
- package/esm/Configuration.js.map +1 -1
- package/esm/Configuration.mjs +255 -27
- package/esm/ConflictEvent.d.ts.map +1 -1
- package/esm/ConflictEvent.js.map +1 -1
- package/esm/ConflictEvent.mjs +255 -27
- package/esm/ConnectionHealthSnapshot.d.ts.map +1 -1
- package/esm/ConnectionHealthSnapshot.js.map +1 -1
- package/esm/ConnectionHealthSnapshot.mjs +255 -27
- package/esm/Customer.d.ts.map +1 -1
- package/esm/Customer.js.map +1 -1
- package/esm/Customer.mjs +255 -27
- package/esm/DeadLetterMessage.d.ts.map +1 -1
- package/esm/DeadLetterMessage.js.map +1 -1
- package/esm/DeadLetterMessage.mjs +255 -27
- package/esm/EconomicEvent.d.ts.map +1 -1
- package/esm/EconomicEvent.js.map +1 -1
- package/esm/EconomicEvent.mjs +255 -27
- package/esm/Event.d.ts.map +1 -1
- package/esm/Event.js.map +1 -1
- package/esm/Event.mjs +255 -27
- package/esm/EventSnapshot.d.ts.map +1 -1
- package/esm/EventSnapshot.js.map +1 -1
- package/esm/EventSnapshot.mjs +255 -27
- package/esm/FeatureImportanceAnalysis.d.ts.map +1 -1
- package/esm/FeatureImportanceAnalysis.js.map +1 -1
- package/esm/FeatureImportanceAnalysis.mjs +255 -27
- package/esm/InstitutionalFlowSignal.d.ts.map +1 -1
- package/esm/InstitutionalFlowSignal.js.map +1 -1
- package/esm/InstitutionalFlowSignal.mjs +255 -27
- package/esm/InstitutionalHolding.d.ts.map +1 -1
- package/esm/InstitutionalHolding.js.map +1 -1
- package/esm/InstitutionalHolding.mjs +255 -27
- package/esm/InstitutionalSentimentAlerts.d.ts.map +1 -1
- package/esm/InstitutionalSentimentAlerts.js.map +1 -1
- package/esm/InstitutionalSentimentAlerts.mjs +255 -27
- package/esm/InstitutionalSentimentErrors.d.ts.map +1 -1
- package/esm/InstitutionalSentimentErrors.js.map +1 -1
- package/esm/InstitutionalSentimentErrors.mjs +255 -27
- package/esm/InstitutionalSentimentHistory.d.ts.map +1 -1
- package/esm/InstitutionalSentimentHistory.js.map +1 -1
- package/esm/InstitutionalSentimentHistory.mjs +255 -27
- package/esm/InstitutionalSentimentMetrics.d.ts.map +1 -1
- package/esm/InstitutionalSentimentMetrics.js.map +1 -1
- package/esm/InstitutionalSentimentMetrics.mjs +255 -27
- package/esm/InviteToken.d.ts.map +1 -1
- package/esm/InviteToken.js.map +1 -1
- package/esm/InviteToken.mjs +255 -27
- package/esm/LinkedProvider.d.ts.map +1 -1
- package/esm/LinkedProvider.js.map +1 -1
- package/esm/LinkedProvider.mjs +255 -27
- package/esm/MLTrainingData.d.ts.map +1 -1
- package/esm/MLTrainingData.js.map +1 -1
- package/esm/MLTrainingData.mjs +255 -27
- package/esm/MarketSentiment.d.ts.map +1 -1
- package/esm/MarketSentiment.js.map +1 -1
- package/esm/MarketSentiment.mjs +255 -27
- package/esm/ModelArtifact.d.ts.map +1 -1
- package/esm/ModelArtifact.js.map +1 -1
- package/esm/ModelArtifact.mjs +255 -27
- package/esm/ModelVersion.d.ts.map +1 -1
- package/esm/ModelVersion.js.map +1 -1
- package/esm/ModelVersion.mjs +255 -27
- package/esm/ModelVersionArtifact.d.ts.map +1 -1
- package/esm/ModelVersionArtifact.js.map +1 -1
- package/esm/ModelVersionArtifact.mjs +255 -27
- package/esm/NewsArticle.d.ts.map +1 -1
- package/esm/NewsArticle.js.map +1 -1
- package/esm/NewsArticle.mjs +255 -27
- package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
- package/esm/NewsArticleAssetSentiment.js.map +1 -1
- package/esm/NewsArticleAssetSentiment.mjs +255 -27
- package/esm/OptionsContract.d.ts.map +1 -1
- package/esm/OptionsContract.js.map +1 -1
- package/esm/OptionsContract.mjs +255 -27
- package/esm/OptionsGreeksHistory.d.ts.map +1 -1
- package/esm/OptionsGreeksHistory.js.map +1 -1
- package/esm/OptionsGreeksHistory.mjs +255 -27
- package/esm/OptionsPosition.d.ts.map +1 -1
- package/esm/OptionsPosition.js.map +1 -1
- package/esm/OptionsPosition.mjs +255 -27
- package/esm/OptionsTradeExecution.d.ts.map +1 -1
- package/esm/OptionsTradeExecution.js.map +1 -1
- package/esm/OptionsTradeExecution.mjs +255 -27
- package/esm/PortfolioGreeksHistory.d.ts.map +1 -1
- package/esm/PortfolioGreeksHistory.js.map +1 -1
- package/esm/PortfolioGreeksHistory.mjs +255 -27
- package/esm/ScheduledOptionOrder.d.ts.map +1 -1
- package/esm/ScheduledOptionOrder.js.map +1 -1
- package/esm/ScheduledOptionOrder.mjs +255 -27
- package/esm/Session.d.ts.map +1 -1
- package/esm/Session.js.map +1 -1
- package/esm/Session.mjs +255 -27
- package/esm/SignalGeneratorMetrics.d.ts.map +1 -1
- package/esm/SignalGeneratorMetrics.js.map +1 -1
- package/esm/SignalGeneratorMetrics.mjs +255 -27
- package/esm/SignalLineage.d.ts.map +1 -1
- package/esm/SignalLineage.js.map +1 -1
- package/esm/SignalLineage.mjs +255 -27
- package/esm/SignalOutcome.d.ts.map +1 -1
- package/esm/SignalOutcome.js.map +1 -1
- package/esm/SignalOutcome.mjs +255 -27
- package/esm/SignalPriorityQueue.d.ts.map +1 -1
- package/esm/SignalPriorityQueue.js.map +1 -1
- package/esm/SignalPriorityQueue.mjs +255 -27
- package/esm/SyncEvent.d.ts.map +1 -1
- package/esm/SyncEvent.js.map +1 -1
- package/esm/SyncEvent.mjs +255 -27
- package/esm/SystemAlert.d.ts.map +1 -1
- package/esm/SystemAlert.js.map +1 -1
- package/esm/SystemAlert.mjs +255 -27
- package/esm/Trade.d.ts.map +1 -1
- package/esm/Trade.js.map +1 -1
- package/esm/Trade.mjs +255 -27
- package/esm/TradeAuditEvent.d.ts.map +1 -1
- package/esm/TradeAuditEvent.js.map +1 -1
- package/esm/TradeAuditEvent.mjs +255 -27
- package/esm/TradeExecutionHistory.d.ts.map +1 -1
- package/esm/TradeExecutionHistory.js.map +1 -1
- package/esm/TradeExecutionHistory.mjs +255 -27
- package/esm/User.d.ts.map +1 -1
- package/esm/User.js.map +1 -1
- package/esm/User.mjs +255 -27
- package/esm/VerificationToken.d.ts.map +1 -1
- package/esm/VerificationToken.js.map +1 -1
- package/esm/VerificationToken.mjs +255 -27
- package/esm/WaitlistEntry.d.ts.map +1 -1
- package/esm/WaitlistEntry.js.map +1 -1
- package/esm/WaitlistEntry.mjs +255 -27
- package/esm/middleware/audit-logger.d.ts +0 -7
- package/esm/middleware/audit-logger.d.ts.map +1 -1
- package/esm/middleware/audit-logger.js.map +1 -1
- package/esm/middleware/audit-logger.mjs +5 -3
- package/esm/prismaClient.d.ts.map +1 -1
- package/esm/prismaClient.js.map +1 -1
- package/esm/prismaClient.mjs +38 -9
- package/package.json +1 -1
- package/prismaClient.cjs +38 -9
package/MLTrainingData.cjs
CHANGED
|
@@ -77,7 +77,7 @@ exports.MLTrainingData = {
|
|
|
77
77
|
* @returns The created MLTrainingData or null.
|
|
78
78
|
*/
|
|
79
79
|
async create(props, globalClient) {
|
|
80
|
-
var _a, _b, _c, _d, _e;
|
|
80
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
81
81
|
// Maximum number of retries for database connection issues
|
|
82
82
|
const MAX_RETRIES = 3;
|
|
83
83
|
let retryCount = 0;
|
|
@@ -169,21 +169,52 @@ exports.MLTrainingData = {
|
|
|
169
169
|
}
|
|
170
170
|
catch (error) {
|
|
171
171
|
lastError = error;
|
|
172
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
173
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
174
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
175
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
176
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
177
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
178
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
179
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
180
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
181
|
+
if (isConstraintViolation) {
|
|
182
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
183
|
+
logger_1.logger.error("Non-retryable constraint violation in createOneMLTrainingData", {
|
|
184
|
+
operation: 'createOneMLTrainingData',
|
|
185
|
+
model: 'MLTrainingData',
|
|
186
|
+
error: String(error),
|
|
187
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
188
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
189
|
+
isRetryable: false,
|
|
190
|
+
});
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
172
193
|
// Check if this is a database connection error that we should retry
|
|
173
|
-
const isConnectionError = ((
|
|
174
|
-
((
|
|
175
|
-
((
|
|
176
|
-
((
|
|
177
|
-
(error.networkError && ((
|
|
194
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
195
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
196
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
197
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
198
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
178
199
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
179
200
|
retryCount++;
|
|
180
201
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
181
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
202
|
+
logger_1.logger.warn("Database connection error in createOneMLTrainingData, retrying...", {
|
|
203
|
+
operation: 'createOneMLTrainingData',
|
|
204
|
+
model: 'MLTrainingData',
|
|
205
|
+
attempt: retryCount,
|
|
206
|
+
maxRetries: MAX_RETRIES,
|
|
207
|
+
});
|
|
182
208
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
183
209
|
continue;
|
|
184
210
|
}
|
|
185
|
-
// Log
|
|
186
|
-
logger_1.logger.error("Database
|
|
211
|
+
// Log structured error details and rethrow
|
|
212
|
+
logger_1.logger.error("Database create operation failed", {
|
|
213
|
+
operation: 'createOneMLTrainingData',
|
|
214
|
+
model: 'MLTrainingData',
|
|
215
|
+
error: String(error),
|
|
216
|
+
isRetryable: isConnectionError,
|
|
217
|
+
});
|
|
187
218
|
throw error;
|
|
188
219
|
}
|
|
189
220
|
}
|
|
@@ -198,7 +229,7 @@ exports.MLTrainingData = {
|
|
|
198
229
|
* @returns The count of created records or null.
|
|
199
230
|
*/
|
|
200
231
|
async createMany(props, globalClient) {
|
|
201
|
-
var _a, _b, _c, _d, _e;
|
|
232
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
202
233
|
// Maximum number of retries for database connection issues
|
|
203
234
|
const MAX_RETRIES = 3;
|
|
204
235
|
let retryCount = 0;
|
|
@@ -289,21 +320,52 @@ exports.MLTrainingData = {
|
|
|
289
320
|
}
|
|
290
321
|
catch (error) {
|
|
291
322
|
lastError = error;
|
|
323
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
324
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
325
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
326
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
327
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
328
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
329
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
330
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
331
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
332
|
+
if (isConstraintViolation) {
|
|
333
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
334
|
+
logger_1.logger.error("Non-retryable constraint violation in createManyMLTrainingData", {
|
|
335
|
+
operation: 'createManyMLTrainingData',
|
|
336
|
+
model: 'MLTrainingData',
|
|
337
|
+
error: String(error),
|
|
338
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
339
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
340
|
+
isRetryable: false,
|
|
341
|
+
});
|
|
342
|
+
throw error;
|
|
343
|
+
}
|
|
292
344
|
// Check if this is a database connection error that we should retry
|
|
293
|
-
const isConnectionError = ((
|
|
294
|
-
((
|
|
295
|
-
((
|
|
296
|
-
((
|
|
297
|
-
(error.networkError && ((
|
|
345
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
346
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
347
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
348
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
349
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
298
350
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
299
351
|
retryCount++;
|
|
300
352
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
301
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
353
|
+
logger_1.logger.warn("Database connection error in createManyMLTrainingData, retrying...", {
|
|
354
|
+
operation: 'createManyMLTrainingData',
|
|
355
|
+
model: 'MLTrainingData',
|
|
356
|
+
attempt: retryCount,
|
|
357
|
+
maxRetries: MAX_RETRIES,
|
|
358
|
+
});
|
|
302
359
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
303
360
|
continue;
|
|
304
361
|
}
|
|
305
|
-
// Log
|
|
306
|
-
logger_1.logger.error("Database
|
|
362
|
+
// Log structured error details and rethrow
|
|
363
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
364
|
+
operation: 'createManyMLTrainingData',
|
|
365
|
+
model: 'MLTrainingData',
|
|
366
|
+
error: String(error),
|
|
367
|
+
isRetryable: isConnectionError,
|
|
368
|
+
});
|
|
307
369
|
throw error;
|
|
308
370
|
}
|
|
309
371
|
}
|
|
@@ -318,7 +380,7 @@ exports.MLTrainingData = {
|
|
|
318
380
|
* @returns The updated MLTrainingData or null.
|
|
319
381
|
*/
|
|
320
382
|
async update(props, globalClient) {
|
|
321
|
-
var _a, _b, _c, _d, _e;
|
|
383
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
322
384
|
// Maximum number of retries for database connection issues
|
|
323
385
|
const MAX_RETRIES = 3;
|
|
324
386
|
let retryCount = 0;
|
|
@@ -523,21 +585,55 @@ exports.MLTrainingData = {
|
|
|
523
585
|
}
|
|
524
586
|
catch (error) {
|
|
525
587
|
lastError = error;
|
|
588
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
589
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
590
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
591
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
592
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
593
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
594
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
595
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
596
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
597
|
+
if (isConstraintViolation) {
|
|
598
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
599
|
+
logger_1.logger.error("Non-retryable constraint violation in updateOneMLTrainingData", {
|
|
600
|
+
operation: 'updateOneMLTrainingData',
|
|
601
|
+
model: 'MLTrainingData',
|
|
602
|
+
error: String(error),
|
|
603
|
+
recordId: props.id,
|
|
604
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
605
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
606
|
+
isRetryable: false,
|
|
607
|
+
});
|
|
608
|
+
throw error;
|
|
609
|
+
}
|
|
526
610
|
// Check if this is a database connection error that we should retry
|
|
527
|
-
const isConnectionError = ((
|
|
528
|
-
((
|
|
529
|
-
((
|
|
530
|
-
((
|
|
531
|
-
(error.networkError && ((
|
|
611
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
612
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
613
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
614
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
615
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
532
616
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
533
617
|
retryCount++;
|
|
534
618
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
535
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
619
|
+
logger_1.logger.warn("Database connection error in updateOneMLTrainingData, retrying...", {
|
|
620
|
+
operation: 'updateOneMLTrainingData',
|
|
621
|
+
model: 'MLTrainingData',
|
|
622
|
+
attempt: retryCount,
|
|
623
|
+
maxRetries: MAX_RETRIES,
|
|
624
|
+
recordId: props.id,
|
|
625
|
+
});
|
|
536
626
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
537
627
|
continue;
|
|
538
628
|
}
|
|
539
|
-
// Log
|
|
540
|
-
logger_1.logger.error("Database
|
|
629
|
+
// Log structured error details and rethrow
|
|
630
|
+
logger_1.logger.error("Database update operation failed", {
|
|
631
|
+
operation: 'updateOneMLTrainingData',
|
|
632
|
+
model: 'MLTrainingData',
|
|
633
|
+
error: String(error),
|
|
634
|
+
recordId: props.id,
|
|
635
|
+
isRetryable: isConnectionError,
|
|
636
|
+
});
|
|
541
637
|
throw error;
|
|
542
638
|
}
|
|
543
639
|
}
|
|
@@ -552,7 +648,7 @@ exports.MLTrainingData = {
|
|
|
552
648
|
* @returns The updated MLTrainingData or null.
|
|
553
649
|
*/
|
|
554
650
|
async upsert(props, globalClient) {
|
|
555
|
-
var _a, _b, _c, _d, _e;
|
|
651
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
556
652
|
// Maximum number of retries for database connection issues
|
|
557
653
|
const MAX_RETRIES = 3;
|
|
558
654
|
let retryCount = 0;
|
|
@@ -798,21 +894,55 @@ exports.MLTrainingData = {
|
|
|
798
894
|
}
|
|
799
895
|
catch (error) {
|
|
800
896
|
lastError = error;
|
|
897
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
898
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
899
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
900
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
901
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
902
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
903
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
904
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
905
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
906
|
+
if (isConstraintViolation) {
|
|
907
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
908
|
+
logger_1.logger.error("Non-retryable constraint violation in upsertOneMLTrainingData", {
|
|
909
|
+
operation: 'upsertOneMLTrainingData',
|
|
910
|
+
model: 'MLTrainingData',
|
|
911
|
+
error: String(error),
|
|
912
|
+
recordId: props.id,
|
|
913
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
914
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
915
|
+
isRetryable: false,
|
|
916
|
+
});
|
|
917
|
+
throw error;
|
|
918
|
+
}
|
|
801
919
|
// Check if this is a database connection error that we should retry
|
|
802
|
-
const isConnectionError = ((
|
|
803
|
-
((
|
|
804
|
-
((
|
|
805
|
-
((
|
|
806
|
-
(error.networkError && ((
|
|
920
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
921
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
922
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
923
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
924
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
807
925
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
808
926
|
retryCount++;
|
|
809
927
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
810
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
928
|
+
logger_1.logger.warn("Database connection error in upsertOneMLTrainingData, retrying...", {
|
|
929
|
+
operation: 'upsertOneMLTrainingData',
|
|
930
|
+
model: 'MLTrainingData',
|
|
931
|
+
attempt: retryCount,
|
|
932
|
+
maxRetries: MAX_RETRIES,
|
|
933
|
+
recordId: props.id,
|
|
934
|
+
});
|
|
811
935
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
812
936
|
continue;
|
|
813
937
|
}
|
|
814
|
-
// Log
|
|
815
|
-
logger_1.logger.error("Database
|
|
938
|
+
// Log structured error details and rethrow
|
|
939
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
940
|
+
operation: 'upsertOneMLTrainingData',
|
|
941
|
+
model: 'MLTrainingData',
|
|
942
|
+
error: String(error),
|
|
943
|
+
recordId: props.id,
|
|
944
|
+
isRetryable: isConnectionError,
|
|
945
|
+
});
|
|
816
946
|
throw error;
|
|
817
947
|
}
|
|
818
948
|
}
|
|
@@ -827,7 +957,7 @@ exports.MLTrainingData = {
|
|
|
827
957
|
* @returns The count of created records or null.
|
|
828
958
|
*/
|
|
829
959
|
async updateMany(props, globalClient) {
|
|
830
|
-
var _a, _b, _c, _d, _e;
|
|
960
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
831
961
|
// Maximum number of retries for database connection issues
|
|
832
962
|
const MAX_RETRIES = 3;
|
|
833
963
|
let retryCount = 0;
|
|
@@ -1032,21 +1162,52 @@ exports.MLTrainingData = {
|
|
|
1032
1162
|
}
|
|
1033
1163
|
catch (error) {
|
|
1034
1164
|
lastError = error;
|
|
1165
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
1166
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
1167
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
1168
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
1169
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
1170
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
1171
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
1172
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
1173
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
1174
|
+
if (isConstraintViolation) {
|
|
1175
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
1176
|
+
logger_1.logger.error("Non-retryable constraint violation in updateManyMLTrainingData", {
|
|
1177
|
+
operation: 'updateManyMLTrainingData',
|
|
1178
|
+
model: 'MLTrainingData',
|
|
1179
|
+
error: String(error),
|
|
1180
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
1181
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
1182
|
+
isRetryable: false,
|
|
1183
|
+
});
|
|
1184
|
+
throw error;
|
|
1185
|
+
}
|
|
1035
1186
|
// Check if this is a database connection error that we should retry
|
|
1036
|
-
const isConnectionError = ((
|
|
1037
|
-
((
|
|
1038
|
-
((
|
|
1039
|
-
((
|
|
1040
|
-
(error.networkError && ((
|
|
1187
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
1188
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
1189
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
1190
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
1191
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
1041
1192
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1042
1193
|
retryCount++;
|
|
1043
1194
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1044
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1195
|
+
logger_1.logger.warn("Database connection error in updateManyMLTrainingData, retrying...", {
|
|
1196
|
+
operation: 'updateManyMLTrainingData',
|
|
1197
|
+
model: 'MLTrainingData',
|
|
1198
|
+
attempt: retryCount,
|
|
1199
|
+
maxRetries: MAX_RETRIES,
|
|
1200
|
+
});
|
|
1045
1201
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1046
1202
|
continue;
|
|
1047
1203
|
}
|
|
1048
|
-
// Log
|
|
1049
|
-
logger_1.logger.error("Database
|
|
1204
|
+
// Log structured error details and rethrow
|
|
1205
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
1206
|
+
operation: 'updateManyMLTrainingData',
|
|
1207
|
+
model: 'MLTrainingData',
|
|
1208
|
+
error: String(error),
|
|
1209
|
+
isRetryable: isConnectionError,
|
|
1210
|
+
});
|
|
1050
1211
|
throw error;
|
|
1051
1212
|
}
|
|
1052
1213
|
}
|
|
@@ -1061,7 +1222,7 @@ exports.MLTrainingData = {
|
|
|
1061
1222
|
* @returns The deleted MLTrainingData or null.
|
|
1062
1223
|
*/
|
|
1063
1224
|
async delete(props, globalClient) {
|
|
1064
|
-
var _a, _b, _c, _d, _e;
|
|
1225
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
1065
1226
|
// Maximum number of retries for database connection issues
|
|
1066
1227
|
const MAX_RETRIES = 3;
|
|
1067
1228
|
let retryCount = 0;
|
|
@@ -1105,21 +1266,58 @@ exports.MLTrainingData = {
|
|
|
1105
1266
|
}
|
|
1106
1267
|
catch (error) {
|
|
1107
1268
|
lastError = error;
|
|
1269
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
1270
|
+
// (e.g., foreign key constraints preventing deletion)
|
|
1271
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
1272
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
1273
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
1274
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
1275
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
1276
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
1277
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('23503')) ||
|
|
1278
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2002')) ||
|
|
1279
|
+
((_j = error.message) === null || _j === void 0 ? void 0 : _j.includes('P2003')) ||
|
|
1280
|
+
((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('P2014'));
|
|
1281
|
+
if (isConstraintViolation) {
|
|
1282
|
+
const constraintMatch = (_l = error.message) === null || _l === void 0 ? void 0 : _l.match(/constraint\s+"([^"]+)"/);
|
|
1283
|
+
logger_1.logger.error("Non-retryable constraint violation in deleteOneMLTrainingData", {
|
|
1284
|
+
operation: 'deleteOneMLTrainingData',
|
|
1285
|
+
model: 'MLTrainingData',
|
|
1286
|
+
error: String(error),
|
|
1287
|
+
recordId: props.id,
|
|
1288
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
1289
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
1290
|
+
isRetryable: false,
|
|
1291
|
+
});
|
|
1292
|
+
throw error;
|
|
1293
|
+
}
|
|
1108
1294
|
// Check if this is a database connection error that we should retry
|
|
1109
|
-
const isConnectionError = ((
|
|
1110
|
-
((
|
|
1111
|
-
((
|
|
1112
|
-
((
|
|
1113
|
-
(error.networkError && ((
|
|
1295
|
+
const isConnectionError = ((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Server has closed the connection')) ||
|
|
1296
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Cannot reach database server')) ||
|
|
1297
|
+
((_p = error.message) === null || _p === void 0 ? void 0 : _p.includes('Connection timed out')) ||
|
|
1298
|
+
((_q = error.message) === null || _q === void 0 ? void 0 : _q.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
1299
|
+
(error.networkError && ((_r = error.networkError.message) === null || _r === void 0 ? void 0 : _r.includes('Failed to fetch')));
|
|
1114
1300
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1115
1301
|
retryCount++;
|
|
1116
1302
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1117
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1303
|
+
logger_1.logger.warn("Database connection error in deleteOneMLTrainingData, retrying...", {
|
|
1304
|
+
operation: 'deleteOneMLTrainingData',
|
|
1305
|
+
model: 'MLTrainingData',
|
|
1306
|
+
attempt: retryCount,
|
|
1307
|
+
maxRetries: MAX_RETRIES,
|
|
1308
|
+
recordId: props.id,
|
|
1309
|
+
});
|
|
1118
1310
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1119
1311
|
continue;
|
|
1120
1312
|
}
|
|
1121
|
-
// Log
|
|
1122
|
-
logger_1.logger.error("Database
|
|
1313
|
+
// Log structured error details and rethrow
|
|
1314
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
1315
|
+
operation: 'deleteOneMLTrainingData',
|
|
1316
|
+
model: 'MLTrainingData',
|
|
1317
|
+
error: String(error),
|
|
1318
|
+
recordId: props.id,
|
|
1319
|
+
isRetryable: isConnectionError,
|
|
1320
|
+
});
|
|
1123
1321
|
throw error;
|
|
1124
1322
|
}
|
|
1125
1323
|
}
|
|
@@ -1192,12 +1390,22 @@ exports.MLTrainingData = {
|
|
|
1192
1390
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1193
1391
|
retryCount++;
|
|
1194
1392
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1195
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1393
|
+
logger_1.logger.warn("Database connection error in getMLTrainingData, retrying...", {
|
|
1394
|
+
operation: 'getMLTrainingData',
|
|
1395
|
+
model: 'MLTrainingData',
|
|
1396
|
+
attempt: retryCount,
|
|
1397
|
+
maxRetries: MAX_RETRIES,
|
|
1398
|
+
});
|
|
1196
1399
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1197
1400
|
continue;
|
|
1198
1401
|
}
|
|
1199
|
-
// Log
|
|
1200
|
-
logger_1.logger.error("Database
|
|
1402
|
+
// Log structured error details and rethrow
|
|
1403
|
+
logger_1.logger.error("Database get operation failed", {
|
|
1404
|
+
operation: 'getMLTrainingData',
|
|
1405
|
+
model: 'MLTrainingData',
|
|
1406
|
+
error: String(error),
|
|
1407
|
+
isRetryable: isConnectionError,
|
|
1408
|
+
});
|
|
1201
1409
|
throw error;
|
|
1202
1410
|
}
|
|
1203
1411
|
}
|
|
@@ -1255,12 +1463,22 @@ exports.MLTrainingData = {
|
|
|
1255
1463
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1256
1464
|
retryCount++;
|
|
1257
1465
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1258
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1466
|
+
logger_1.logger.warn("Database connection error in getAllMLTrainingData, retrying...", {
|
|
1467
|
+
operation: 'getAllMLTrainingData',
|
|
1468
|
+
model: 'MLTrainingData',
|
|
1469
|
+
attempt: retryCount,
|
|
1470
|
+
maxRetries: MAX_RETRIES,
|
|
1471
|
+
});
|
|
1259
1472
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1260
1473
|
continue;
|
|
1261
1474
|
}
|
|
1262
|
-
// Log
|
|
1263
|
-
logger_1.logger.error("Database
|
|
1475
|
+
// Log structured error details and rethrow
|
|
1476
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
1477
|
+
operation: 'getAllMLTrainingData',
|
|
1478
|
+
model: 'MLTrainingData',
|
|
1479
|
+
error: String(error),
|
|
1480
|
+
isRetryable: isConnectionError,
|
|
1481
|
+
});
|
|
1264
1482
|
throw error;
|
|
1265
1483
|
}
|
|
1266
1484
|
}
|
|
@@ -1340,12 +1558,22 @@ exports.MLTrainingData = {
|
|
|
1340
1558
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1341
1559
|
retryCount++;
|
|
1342
1560
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1343
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1561
|
+
logger_1.logger.warn("Database connection error in findManyMLTrainingData, retrying...", {
|
|
1562
|
+
operation: 'findManyMLTrainingData',
|
|
1563
|
+
model: 'MLTrainingData',
|
|
1564
|
+
attempt: retryCount,
|
|
1565
|
+
maxRetries: MAX_RETRIES,
|
|
1566
|
+
});
|
|
1344
1567
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1345
1568
|
continue;
|
|
1346
1569
|
}
|
|
1347
|
-
// Log
|
|
1348
|
-
logger_1.logger.error("Database
|
|
1570
|
+
// Log structured error details and rethrow
|
|
1571
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
1572
|
+
operation: 'findManyMLTrainingData',
|
|
1573
|
+
model: 'MLTrainingData',
|
|
1574
|
+
error: String(error),
|
|
1575
|
+
isRetryable: isConnectionError,
|
|
1576
|
+
});
|
|
1349
1577
|
throw error;
|
|
1350
1578
|
}
|
|
1351
1579
|
}
|