Skip to content

Commit 7dca29c

Browse files
committed
fix: use new instances of wallet in parallel calls
TICKET: COIN-5426
1 parent 5cd32b7 commit 7dca29c

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

modules/sdk-core/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IWallet } from '../wallet';
1+
import { Wallet, IWallet } from '../wallet';
22
import { MessageStandardType } from '../utils';
33
import { MidnightMessageProvider } from './midnightMessageProvider';
44
import { IMessageProvider, MessageInfo } from './iMessageProvider';
@@ -27,17 +27,25 @@ async function bulkSignAccountBasedMessagesWithProvider(
2727
const failedAddresses: string[] = [];
2828
const txRequests: Record<string, unknown>[] = [];
2929

30+
// Gather all messages to process (flatten all batches)
31+
let allMessages: MessageInfo[] = [];
3032
let messages: MessageInfo[] = await provider.getMessagesAndAddressesToSign();
3133
while (messages.length > 0) {
32-
// Sign/build all messages in parallel
33-
const results = await Promise.all(
34-
messages.map((messageInfo) => signOrBuildMessage(wallet, messageInfo, messageStandardType, walletPassphrase))
35-
);
36-
// Process results and update counters
37-
processResults(results, txRequests, failedAddresses);
38-
// Get next batch of messages
34+
allMessages = allMessages.concat(messages);
3935
messages = await provider.getMessagesAndAddressesToSign();
4036
}
37+
38+
// Extract wallet constructor params
39+
const { bitgo, baseCoin, _wallet: walletData } = wallet as Wallet;
40+
41+
// Process all messages in parallel, each with a new Wallet instance
42+
const results = await Promise.all(
43+
allMessages.map(async (messageInfo) => {
44+
const newWallet = new Wallet(bitgo, baseCoin, walletData);
45+
return signOrBuildMessage(newWallet, messageInfo, messageStandardType, walletPassphrase);
46+
})
47+
);
48+
processResults(results, txRequests, failedAddresses);
4149
return { failedAddresses, txRequests };
4250
}
4351

0 commit comments

Comments
 (0)