velocious 1.0.535 → 1.0.537

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.
@@ -47,6 +47,7 @@
47
47
  * @typedef {object} RetryableDatabaseErrorResult
48
48
  * @property {boolean} retry - Whether the error should be retried.
49
49
  * @property {boolean} reconnect - Whether to reconnect before retrying.
50
+ * @property {boolean} [deadlock] - Whether the error is a transaction deadlock/lock-wait-timeout that should retry the whole transaction.
50
51
  * @property {number} [maxTries] - Override the max retry attempts.
51
52
  * @property {number} [waitMs] - Wait time before retrying in milliseconds.
52
53
  */
@@ -851,11 +852,50 @@ export default class VelociousDatabaseDriversBase {
851
852
  }
852
853
 
853
854
  /**
854
- * Runs transaction.
855
+ * Runs a callback inside a database transaction (or a savepoint when already inside one).
856
+ * The outermost transaction retries the whole callback on a deadlock / lock-wait-timeout,
857
+ * because such errors roll the entire transaction back and the standard recovery is to
858
+ * restart it. Nested savepoints let the deadlock bubble up to this outer retry.
855
859
  * @param {() => Promise<void>} callback - Callback function.
856
- * @returns {Promise<?>} - Resolves with the transaction.
860
+ * @returns {Promise<?>} - Resolves with the transaction result.
857
861
  */
858
862
  async transaction(callback) {
863
+ if (this._transactionsCount > 0) {
864
+ return await this._runTransactionAttempt(callback)
865
+ }
866
+
867
+ const maxAttempts = 5
868
+ let attempt = 0
869
+
870
+ while (true) {
871
+ attempt++
872
+
873
+ try {
874
+ return await this._runTransactionAttempt(callback)
875
+ } catch (error) {
876
+ const retryInfo = error instanceof Error ? this.retryableDatabaseError(error) : {retry: false, reconnect: false}
877
+
878
+ if (retryInfo.deadlock && attempt < maxAttempts && this._transactionsCount == 0) {
879
+ const baseWaitMs = typeof retryInfo.waitMs == "number" && retryInfo.waitMs > 0 ? retryInfo.waitMs : 50
880
+
881
+ this.logger.warn(`Retrying transaction after deadlock (attempt ${attempt}/${maxAttempts})`)
882
+ await wait(baseWaitMs * attempt)
883
+ continue
884
+ }
885
+
886
+ throw error
887
+ }
888
+ }
889
+ }
890
+
891
+ /**
892
+ * Runs a single transaction attempt: starts a transaction (or a savepoint when nested), runs
893
+ * `callback`, and commits — rolling back on error. {@link transaction} wraps this with deadlock
894
+ * retry at the outermost level.
895
+ * @param {() => Promise<void>} callback - Callback function.
896
+ * @returns {Promise<?>} - Resolves with the transaction result.
897
+ */
898
+ async _runTransactionAttempt(callback) {
859
899
  const savePointName = this.generateSavePointName()
860
900
  /**
861
901
  * Callback frame.
@@ -919,7 +959,11 @@ export default class VelociousDatabaseDriversBase {
919
959
  }
920
960
  }
921
961
 
922
- if (transactionStarted && !transactionRolledBack) {
962
+ // Only roll back if a transaction is still open. A nested savepoint whose rollback failed
963
+ // falls back to rolling back the whole transaction (above), which already closed it and
964
+ // dropped the count to 0; rolling back again here would issue a second ROLLBACK and drive
965
+ // `_transactionsCount` below zero, which would then defeat the outermost deadlock-retry guard.
966
+ if (transactionStarted && !transactionRolledBack && this._transactionsCount > 0) {
923
967
  this.logger.debug("Rollback transaction")
924
968
  await this.rollbackTransaction()
925
969
  }
@@ -1014,6 +1058,23 @@ export default class VelociousDatabaseDriversBase {
1014
1058
  }
1015
1059
  }
1016
1060
 
1061
+ /**
1062
+ * Streams the rows of `sql` one at a time instead of buffering the whole result set, so a
1063
+ * caller can process an arbitrarily large result with bounded memory. This base implementation
1064
+ * falls back to a buffered {@link query} and yields its rows; drivers backed by a cursor-capable
1065
+ * client (the MySQL driver) override it with true server-side streaming.
1066
+ * @param {string} sql - SQL string to stream.
1067
+ * @param {QueryOptions} [options] - Query options, as for {@link query}.
1068
+ * @yields {Record<string, unknown>} - The result rows, one at a time.
1069
+ */
1070
+ async *queryStream(sql, options = {}) {
1071
+ const rows = await this.query(sql, options)
1072
+
1073
+ for (const row of Array.isArray(rows) ? rows : []) {
1074
+ yield row
1075
+ }
1076
+ }
1077
+
1017
1078
  /**
1018
1079
  * Runs query.
1019
1080
  * @param {string} sql - SQL string.
@@ -14,6 +14,7 @@ import Options from "./options.js"
14
14
  import mysql from "mysql"
15
15
  import query from "./query.js"
16
16
  import QueryParser from "./query-parser.js"
17
+ import streamQuery from "./query-stream.js"
17
18
  import RemoveIndex from "./sql/remove-index.js"
18
19
  import Table from "./table.js"
19
20
  import StructureSql from "./structure-sql.js"
@@ -332,6 +333,19 @@ export default class VelociousDatabaseDriversMysql extends Base{
332
333
  return {retry: true, reconnect: false, waitMs: 50}
333
334
  }
334
335
 
336
+ // A deadlock or lock-wait-timeout aborts the whole transaction; it must be retried at the
337
+ // transaction level (re-running the callback), not the query level, so flag it as such and
338
+ // keep `retry` false so an in-transaction query does not retry against the dead transaction.
339
+ if (
340
+ errorCode == "ER_LOCK_DEADLOCK" ||
341
+ errorCode == "ER_LOCK_WAIT_TIMEOUT" ||
342
+ message.includes("ER_LOCK_DEADLOCK") ||
343
+ message.includes("Deadlock found") ||
344
+ message.includes("Lock wait timeout exceeded")
345
+ ) {
346
+ return {retry: false, reconnect: false, deadlock: true, waitMs: 50}
347
+ }
348
+
335
349
  shouldReconnect ||= (
336
350
  errorCode == "ECONNREFUSED" ||
337
351
  message.includes("ECONNREFUSED") ||
@@ -371,6 +385,20 @@ export default class VelociousDatabaseDriversMysql extends Base{
371
385
  }
372
386
  }
373
387
 
388
+ /**
389
+ * Streams the rows of `sql` from a dedicated pooled connection using the MySQL cursor, so a
390
+ * large result set is read incrementally instead of being buffered. Overrides the base
391
+ * buffered fallback with true server-side streaming.
392
+ * @param {string} sql - SQL string to stream.
393
+ * @yields {Record<string, unknown>} - The result rows, one at a time.
394
+ */
395
+ async *queryStream(sql) {
396
+ if (!this.pool) await this.connect()
397
+ if (!this.pool) throw new Error("MySQL pool failed to initialize")
398
+
399
+ yield* streamQuery(this.pool, sql)
400
+ }
401
+
374
402
  /**
375
403
  * Executes a mutation with affected-row metadata.
376
404
  * @param {string} sql - Mutation SQL.
@@ -0,0 +1,43 @@
1
+ import {PassThrough} from "node:stream"
2
+
3
+ /**
4
+ * Streams the rows of `sql` from a dedicated pooled connection, yielding row objects one at a
5
+ * time so an arbitrarily large result set is never buffered in memory. The `mysql` package's
6
+ * query stream is a `readable-stream` polyfill that is not async-iterable, so it is piped through
7
+ * a native {@link PassThrough} (which is) — `pipe` preserves backpressure, pausing the source
8
+ * connection when the consumer falls behind. The connection is released back to the pool on
9
+ * normal completion, and destroyed if iteration is aborted (a `break`/`throw` out of the
10
+ * consuming `for await`) so a half-drained connection is never handed back to the pool.
11
+ * @param {import("mysql").Pool} pool - Pool to check a streaming connection out of.
12
+ * @param {string} sql - SQL string to stream.
13
+ * @yields {Record<string, unknown>} - The result rows, one at a time.
14
+ */
15
+ export default async function* streamQuery(pool, sql) {
16
+ const connection = await new Promise((resolve, reject) => {
17
+ pool.getConnection((error, pooledConnection) => {
18
+ if (error) reject(error)
19
+ else resolve(pooledConnection)
20
+ })
21
+ })
22
+ let completed = false
23
+
24
+ try {
25
+ const sourceStream = connection.query(sql).stream()
26
+ const rowStream = new PassThrough({objectMode: true})
27
+
28
+ sourceStream.on("error", (/** @type {unknown} */ error) => rowStream.destroy(error instanceof Error ? error : new Error(String(error))))
29
+ sourceStream.pipe(rowStream)
30
+
31
+ for await (const row of rowStream) {
32
+ yield row
33
+ }
34
+
35
+ completed = true
36
+ } finally {
37
+ if (completed) {
38
+ connection.release()
39
+ } else {
40
+ connection.destroy()
41
+ }
42
+ }
43
+ }
@@ -2,6 +2,7 @@
2
2
 
3
3
  const DEFAULT_INSERT_CHUNK_SIZE = 100
4
4
  const DEFAULT_QUERY_CHUNK_SIZE = 500
5
+ const DEFAULT_STREAM_BATCH_SIZE = 1000
5
6
 
6
7
  /**
7
8
  * Splits an array into chunks of at most `chunkSize` items.
@@ -204,6 +205,174 @@ export default class DataCopier {
204
205
  return {idsByTableName, rowsByTableName}
205
206
  }
206
207
 
208
+ /**
209
+ * The plan tables referenced as a parent by some child entry. Their ids must be retained
210
+ * while streaming so their children can be scoped; leaf tables — typically the high-volume
211
+ * ones — are never in this set and so are never accumulated in memory.
212
+ * @returns {Set<string>} - Table names that are a parent of another plan entry.
213
+ */
214
+ parentTableNames() {
215
+ /** @type {Set<string>} */
216
+ const names = new Set()
217
+
218
+ for (const tableConfig of this.tablePlan) {
219
+ if (tableConfig.parentTableName) {
220
+ names.add(tableConfig.parentTableName)
221
+ }
222
+ }
223
+
224
+ return names
225
+ }
226
+
227
+ /**
228
+ * Streams every plan table's source rows scoped to `keyValue` in bounded `batchSize` batches,
229
+ * following parent/child chaining. Each table is read through a real
230
+ * {@link import("../drivers/base.js").default#queryStream} cursor, so a large table is never
231
+ * buffered; only the ids of tables that are themselves a parent are retained (to scope their
232
+ * children). `selectColumns` bounds each row's projection — pass `[idColumn]` for a light
233
+ * id-only scan, or omit it to stream full rows — and must include the id column for any table
234
+ * that has children. Memory stays bounded to one batch plus the retained parent-table ids.
235
+ * @param {import("../drivers/base.js").default} db - Source database to stream.
236
+ * @param {string} keyValue - Tenant key selecting the root plan rows.
237
+ * @param {{batchSize: number, selectColumns?: string[]}} options - Batch size and optional projection.
238
+ * @yields {{rows: Record<string, unknown>[], tableName: string}} - Successive row batches per table.
239
+ */
240
+ async *streamPlanSourceBatches(db, keyValue, {batchSize, selectColumns}) {
241
+ /** @type {Map<string, string[]>} */
242
+ const retainedIdsByTableName = new Map()
243
+ const parentTableNames = this.parentTableNames()
244
+
245
+ for (const tableConfig of this.tablePlan) {
246
+ /** @type {string} */
247
+ let scopeColumn
248
+ /** @type {string[]} */
249
+ let scopeValues
250
+
251
+ if (tableConfig.keyColumn) {
252
+ scopeColumn = tableConfig.keyColumn
253
+ scopeValues = [keyValue]
254
+ } else {
255
+ if (!tableConfig.parentColumn || !tableConfig.parentTableName) {
256
+ throw new Error(`Expected keyColumn or parentTableName+parentColumn for table ${tableConfig.tableName} in the tenant table plan.`)
257
+ }
258
+
259
+ if (!retainedIdsByTableName.has(tableConfig.parentTableName)) {
260
+ throw new Error(`Tenant table plan entry ${tableConfig.tableName} references parent table ${tableConfig.parentTableName}, which has not been streamed; parent tables must appear before their children in the plan.`)
261
+ }
262
+
263
+ scopeColumn = tableConfig.parentColumn
264
+ scopeValues = retainedIdsByTableName.get(tableConfig.parentTableName) || []
265
+ }
266
+
267
+ /** @type {string[] | null} */
268
+ const retainedIds = parentTableNames.has(tableConfig.tableName) ? [] : null
269
+ const quotedTable = db.quoteTable(tableConfig.tableName)
270
+ const quotedScope = db.quoteColumn(scopeColumn)
271
+ const selectList = selectColumns
272
+ ? selectColumns.map((column) => `${quotedTable}.${db.quoteColumn(column)}`).join(", ")
273
+ : `${quotedTable}.*`
274
+ /** @type {Record<string, unknown>[]} */
275
+ let batch = []
276
+
277
+ for (const scopeChunk of chunks(uniqueStrings(scopeValues), this.queryChunkSize)) {
278
+ const sql = `SELECT ${selectList} FROM ${quotedTable} WHERE ${quotedScope} IN (${this.quotedValuesSql(db, scopeChunk)})`
279
+
280
+ for await (const row of db.queryStream(sql)) {
281
+ batch.push(row)
282
+
283
+ if (retainedIds) {
284
+ retainedIds.push(String(row[this.idColumn]))
285
+ }
286
+
287
+ if (batch.length >= batchSize) {
288
+ yield {rows: batch, tableName: tableConfig.tableName}
289
+ batch = []
290
+ }
291
+ }
292
+ }
293
+
294
+ if (batch.length > 0) {
295
+ yield {rows: batch, tableName: tableConfig.tableName}
296
+ }
297
+
298
+ retainedIdsByTableName.set(tableConfig.tableName, retainedIds || [])
299
+ }
300
+ }
301
+
302
+ /**
303
+ * Returns which of `ids` currently exist in `tableName` in `db`. `ids` is one already-bounded
304
+ * batch, so it is probed with a single `IN (...)` lookup.
305
+ * @param {{db: import("../drivers/base.js").default, ids: string[], tableName: string}} args - Database, ids to probe, and table.
306
+ * @returns {Promise<Set<string>>} - The subset of `ids` present in the table.
307
+ */
308
+ async queryExistingIds({db, ids, tableName}) {
309
+ if (ids.length <= 0) {
310
+ return new Set()
311
+ }
312
+
313
+ const quotedTable = db.quoteTable(tableName)
314
+ const quotedId = db.quoteColumn(this.idColumn)
315
+ const rows = await this.executeQuietQuery(db, `SELECT ${quotedTable}.${quotedId} FROM ${quotedTable} WHERE ${quotedId} IN (${this.quotedValuesSql(db, ids)})`)
316
+
317
+ return new Set(rows.map((row) => String(row[this.idColumn])))
318
+ }
319
+
320
+ /**
321
+ * Streams the source ids for `keyValue` and returns the first table found to be missing rows in
322
+ * the target, with that batch's missing ids — stopping at the first shortfall instead of
323
+ * enumerating every missing row. Callers verifying a tenant already holds every source row (for
324
+ * example before deleting the source copies) treat an empty result as the go-ahead and any entry
325
+ * as a hard stop; failing fast keeps memory bounded to a single batch even when the target is
326
+ * far behind.
327
+ * @param {string} keyValue - Tenant key selecting the source rows to check.
328
+ * @param {{batchSize?: number}} [options] - Streaming batch size.
329
+ * @returns {Promise<Map<string, string[]>>} - The first table missing rows and that batch's missing ids, or empty when the target holds everything.
330
+ */
331
+ async findMissingRowIds(keyValue, {batchSize = DEFAULT_STREAM_BATCH_SIZE} = {}) {
332
+ /** @type {Map<string, string[]>} */
333
+ const missingByTableName = new Map()
334
+
335
+ for await (const {rows, tableName} of this.streamPlanSourceBatches(this.sourceDb, keyValue, {batchSize, selectColumns: [this.idColumn]})) {
336
+ const ids = rows.map((row) => String(row[this.idColumn]))
337
+ const existingIds = await this.queryExistingIds({db: this.targetDb, ids, tableName})
338
+ const missingIds = ids.filter((id) => !existingIds.has(id))
339
+
340
+ if (missingIds.length > 0) {
341
+ missingByTableName.set(tableName, missingIds)
342
+ break
343
+ }
344
+ }
345
+
346
+ return missingByTableName
347
+ }
348
+
349
+ /**
350
+ * Streams the source rows for `keyValue` and copies into the target, batch by batch, only the
351
+ * rows missing there. Because the full rows travel in the stream, each batch's missing rows are
352
+ * inserted as it arrives — nothing is accumulated, and no second source query runs while the
353
+ * source connection is held by the stream — so a table with large columns stays bounded to one
354
+ * batch even when the target is empty. Intended for single-table plans (or plans whose per-table,
355
+ * parent-first insert order is foreign-key safe).
356
+ * @param {string} keyValue - Tenant key selecting the source rows to reconcile.
357
+ * @param {{batchSize?: number}} [options] - Streaming batch size.
358
+ * @returns {Promise<number>} - The number of rows copied into the target.
359
+ */
360
+ async copyMissingRows(keyValue, {batchSize = DEFAULT_STREAM_BATCH_SIZE} = {}) {
361
+ let copiedCount = 0
362
+
363
+ for await (const {rows, tableName} of this.streamPlanSourceBatches(this.sourceDb, keyValue, {batchSize})) {
364
+ const existingIds = await this.queryExistingIds({db: this.targetDb, ids: rows.map((row) => String(row[this.idColumn])), tableName})
365
+ const missingRows = rows.filter((row) => !existingIds.has(String(row[this.idColumn])))
366
+
367
+ if (missingRows.length > 0) {
368
+ await this.insertTargetRows(new Map([[tableName, missingRows]]))
369
+ copiedCount += missingRows.length
370
+ }
371
+ }
372
+
373
+ return copiedCount
374
+ }
375
+
207
376
  /**
208
377
  * Selects `tableName` rows in `db` whose `columnName` is in `values`, chunked. `selectColumns`
209
378
  * bounds the projection and defaults to every column.
@@ -406,11 +406,22 @@ export default class VelociousDatabaseDriversBase {
406
406
  */
407
407
  tableExists(tableName: string): Promise<boolean>;
408
408
  /**
409
- * Runs transaction.
409
+ * Runs a callback inside a database transaction (or a savepoint when already inside one).
410
+ * The outermost transaction retries the whole callback on a deadlock / lock-wait-timeout,
411
+ * because such errors roll the entire transaction back and the standard recovery is to
412
+ * restart it. Nested savepoints let the deadlock bubble up to this outer retry.
410
413
  * @param {() => Promise<void>} callback - Callback function.
411
- * @returns {Promise<?>} - Resolves with the transaction.
414
+ * @returns {Promise<?>} - Resolves with the transaction result.
412
415
  */
413
416
  transaction(callback: () => Promise<void>): Promise<unknown>;
417
+ /**
418
+ * Runs a single transaction attempt: starts a transaction (or a savepoint when nested), runs
419
+ * `callback`, and commits — rolling back on error. {@link transaction} wraps this with deadlock
420
+ * retry at the outermost level.
421
+ * @param {() => Promise<void>} callback - Callback function.
422
+ * @returns {Promise<?>} - Resolves with the transaction result.
423
+ */
424
+ _runTransactionAttempt(callback: () => Promise<void>): Promise<unknown>;
414
425
  /**
415
426
  * Runs a callback after the surrounding transaction commits.
416
427
  * If no transaction is active, the callback runs immediately.
@@ -448,6 +459,16 @@ export default class VelociousDatabaseDriversBase {
448
459
  * @returns {Promise<void>} - Resolves when complete.
449
460
  */
450
461
  _commitAfterCommitCallbackFrame(): Promise<void>;
462
+ /**
463
+ * Streams the rows of `sql` one at a time instead of buffering the whole result set, so a
464
+ * caller can process an arbitrarily large result with bounded memory. This base implementation
465
+ * falls back to a buffered {@link query} and yields its rows; drivers backed by a cursor-capable
466
+ * client (the MySQL driver) override it with true server-side streaming.
467
+ * @param {string} sql - SQL string to stream.
468
+ * @param {QueryOptions} [options] - Query options, as for {@link query}.
469
+ * @yields {Record<string, unknown>} - The result rows, one at a time.
470
+ */
471
+ queryStream(sql: string, options?: QueryOptions): AsyncGenerator<QueryRowType, void, unknown>;
451
472
  /**
452
473
  * Runs query.
453
474
  * @param {string} sql - SQL string.
@@ -858,6 +879,10 @@ export type RetryableDatabaseErrorResult = {
858
879
  * - Whether to reconnect before retrying.
859
880
  */
860
881
  reconnect: boolean;
882
+ /**
883
+ * - Whether the error is a transaction deadlock/lock-wait-timeout that should retry the whole transaction.
884
+ */
885
+ deadlock?: boolean | undefined;
861
886
  /**
862
887
  * - Override the max retry attempts.
863
888
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"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"}