commit 767f1a9d671d426b0c5b32626900ab26d93f13d4
parent 0b2bf13deff518c3ebbdaf4a72d2c162790906b7
Author: Sebastian <sebasjm@gmail.com>
Date: Fri, 13 Jan 2023 16:34:07 -0300
remove activeLongPoll on error and prevent activeLongPoll skip if forced
Diffstat:
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -982,7 +982,9 @@ enum BankStatusResultCode {
export async function processWithdrawalGroup(
ws: InternalWalletState,
withdrawalGroupId: string,
- options: object = {},
+ options: {
+ forceNow?: boolean;
+ } = {},
): Promise<OperationAttemptResult> {
logger.trace("processing withdrawal group", withdrawalGroupId);
const withdrawalGroup = await ws.db
@@ -998,7 +1000,7 @@ export async function processWithdrawalGroup(
const retryTag = RetryTags.forWithdrawal(withdrawalGroup);
// We're already running!
- if (ws.activeLongpoll[retryTag]) {
+ if (ws.activeLongpoll[retryTag] && !options.forceNow) {
logger.info("withdrawal group already in long-polling, returning!");
return {
type: OperationAttemptResultType.Longpoll,
@@ -1035,8 +1037,9 @@ export async function processWithdrawalGroup(
getErrorDetailFromException(e),
);
return;
+ } finally {
+ delete ws.activeLongpoll[retryTag];
}
- delete ws.activeLongpoll[retryTag];
if (!res.ready) {
await storeOperationPending(ws, retryTag);
}