change cleanupTransactions to avoid stack overflow

This commit is contained in:
Mike Goelzer 2023-02-15 09:35:01 +00:00
parent 710ac31af3
commit 57d6a8390d

View File

@ -242,7 +242,7 @@ export const tryGc = (ds, store, gcFilter) => {
* @param {number} i * @param {number} i
*/ */
const cleanupTransactions = (transactionCleanups, i) => { const cleanupTransactions = (transactionCleanups, i) => {
if (i < transactionCleanups.length) { while (i < transactionCleanups.length) {
const transaction = transactionCleanups[i] const transaction = transactionCleanups[i]
const doc = transaction.doc const doc = transaction.doc
const store = doc.store const store = doc.store
@ -363,11 +363,9 @@ const cleanupTransactions = (transactionCleanups, i) => {
subdocsRemoved.forEach(subdoc => subdoc.destroy()) subdocsRemoved.forEach(subdoc => subdoc.destroy())
} }
if (transactionCleanups.length <= i + 1) { if (transactionCleanups.length <= ++i) {
doc._transactionCleanups = [] doc._transactionCleanups = []
doc.emit('afterAllTransactions', [doc, transactionCleanups]) doc.emit('afterAllTransactions', [doc, transactionCleanups])
} else {
cleanupTransactions(transactionCleanups, i + 1)
} }
} }
} }