make retryInfo optional
This commit is contained in:
parent
e77510106f
commit
7d15ce3d88
@ -185,8 +185,11 @@ export async function runPaymentFaultTest(t: GlobalTestState) {
|
||||
return;
|
||||
}
|
||||
if (faultCount < 3) {
|
||||
console.log(`blocking /deposit request #${faultCount}`);
|
||||
faultCount++;
|
||||
ctx.dropResponse = true;
|
||||
} else {
|
||||
console.log(`letting through /deposit request #${faultCount}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -1332,7 +1332,7 @@ export interface PurchaseRecord {
|
||||
|
||||
abortStatus: AbortStatus;
|
||||
|
||||
payRetryInfo: RetryInfo;
|
||||
payRetryInfo?: RetryInfo;
|
||||
|
||||
lastPayError: TalerErrorDetails | undefined;
|
||||
|
||||
|
@ -51,6 +51,7 @@ import {
|
||||
PreparePayResultType,
|
||||
parsePayUri,
|
||||
Logger,
|
||||
getDurationRemaining,
|
||||
} from "@gnu-taler/taler-util";
|
||||
import { encodeCrock, getRandomBytes } from "../crypto/talerCrypto";
|
||||
import {
|
||||
@ -522,10 +523,15 @@ async function incrementPurchasePayRetry(
|
||||
return;
|
||||
}
|
||||
if (!pr.payRetryInfo) {
|
||||
return;
|
||||
pr.payRetryInfo = initRetryInfo();
|
||||
}
|
||||
pr.payRetryInfo.retryCounter++;
|
||||
updateRetryInfoTimeout(pr.payRetryInfo);
|
||||
logger.trace(
|
||||
`retrying pay in ${
|
||||
getDurationRemaining(pr.payRetryInfo.nextRetry).d_ms
|
||||
} ms`,
|
||||
);
|
||||
pr.lastPayError = err;
|
||||
await tx.purchases.put(pr);
|
||||
});
|
||||
@ -556,7 +562,7 @@ async function resetDownloadProposalRetry(
|
||||
.runReadWrite(async (tx) => {
|
||||
const p = await tx.proposals.get(proposalId);
|
||||
if (p) {
|
||||
p.retryInfo = initRetryInfo();
|
||||
delete p.retryInfo;
|
||||
await tx.proposals.put(p);
|
||||
}
|
||||
});
|
||||
@ -1135,7 +1141,7 @@ async function submitPay(
|
||||
|
||||
// Hide transient errors.
|
||||
if (
|
||||
purchase.payRetryInfo.retryCounter <= 5 &&
|
||||
(purchase.payRetryInfo?.retryCounter ?? 0) <= 5 &&
|
||||
resp.status >= 500 &&
|
||||
resp.status <= 599
|
||||
) {
|
||||
@ -1214,7 +1220,7 @@ async function submitPay(
|
||||
);
|
||||
// Hide transient errors.
|
||||
if (
|
||||
purchase.payRetryInfo.retryCounter <= 5 &&
|
||||
(purchase.payRetryInfo?.retryCounter ?? 0) <= 5 &&
|
||||
resp.status >= 500 &&
|
||||
resp.status <= 599
|
||||
) {
|
||||
|
@ -200,10 +200,11 @@ async function gatherPurchasePending(
|
||||
): Promise<void> {
|
||||
await tx.purchases.iter().forEach((pr) => {
|
||||
if (pr.paymentSubmitPending && pr.abortStatus === AbortStatus.None) {
|
||||
const timestampDue = pr.payRetryInfo?.nextRetry ?? getTimestampNow();
|
||||
resp.pendingOperations.push({
|
||||
type: PendingOperationType.Pay,
|
||||
givesLifeness: true,
|
||||
timestampDue: pr.payRetryInfo.nextRetry,
|
||||
timestampDue,
|
||||
isReplay: false,
|
||||
proposalId: pr.proposalId,
|
||||
retryInfo: pr.payRetryInfo,
|
||||
|
@ -164,7 +164,7 @@ export interface PendingPayOperation {
|
||||
type: PendingOperationType.Pay;
|
||||
proposalId: string;
|
||||
isReplay: boolean;
|
||||
retryInfo: RetryInfo;
|
||||
retryInfo?: RetryInfo;
|
||||
lastError: TalerErrorDetails | undefined;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user