Skip to content

Commit fc7e9c3

Browse files
committed
fix OOM by limiting concurrency
1 parent 8e33330 commit fc7e9c3

File tree

4 files changed

+71
-8
lines changed

4 files changed

+71
-8
lines changed

index.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import assert from 'node:assert'
22
import ms from 'ms'
3+
import pSettle from 'p-settle'
34

45
export const cancelTx = ({
56
tx,
@@ -123,11 +124,14 @@ export class StuckTransactionsCanceller {
123124
')'
124125
)
125126

126-
return Promise.allSettled(txsToCancel.map(tx => this.#cancelTx({
127-
tx,
128-
recentGasLimit: recentSendMessage.gasLimit,
129-
recentGasFeeCap: Number(recentSendMessage.gasFeeCap)
130-
})))
127+
return pSettle(
128+
txsToCancel.map(tx => this.#cancelTx({
129+
tx,
130+
recentGasLimit: recentSendMessage.gasLimit,
131+
recentGasFeeCap: Number(recentSendMessage.gasFeeCap)
132+
})),
133+
{ concurrency: 50 }
134+
)
131135
}
132136

133137
async #cancelTx ({ tx, recentGasLimit, recentGasFeeCap }) {

package-lock.json

Lines changed: 57 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"standard": "^17.1.2"
2121
},
2222
"dependencies": {
23-
"ms": "^2.1.3"
23+
"ms": "^2.1.3",
24+
"p-settle": "^5.1.1"
2425
}
2526
}

test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,9 @@ test('StuckTransactionsCanceller', async t => {
163163
const status = await stuckTransactionsCanceller.cancelOlderThan(0)
164164
assert.deepStrictEqual(status, [{
165165
status: 'fulfilled',
166-
value: undefined
166+
value: undefined,
167+
isFulfilled: true,
168+
isRejected: false
167169
}])
168170
assert.strictEqual(sentTransactions.length, 1)
169171
const sentTransactionClone = { ...sentTransactions[0] }

0 commit comments

Comments
 (0)