gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/02: hide transient errors when accepting a tip


From: gnunet
Subject: [taler-wallet-core] 02/02: hide transient errors when accepting a tip
Date: Thu, 26 Nov 2020 12:27:38 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

commit 2b19594e7adfc4ae75970db5c0881243efcac4df
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Nov 26 12:27:31 2020 +0100

    hide transient errors when accepting a tip
---
 packages/taler-wallet-core/src/operations/tip.ts | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/packages/taler-wallet-core/src/operations/tip.ts 
b/packages/taler-wallet-core/src/operations/tip.ts
index 119695de..cbf61a86 100644
--- a/packages/taler-wallet-core/src/operations/tip.ts
+++ b/packages/taler-wallet-core/src/operations/tip.ts
@@ -40,7 +40,7 @@ import { getRandomBytes, encodeCrock } from 
"../crypto/talerCrypto";
 import { guardOperationException, makeErrorDetails } from "./errors";
 import { NotificationType } from "../types/notifications";
 import { getTimestampNow } from "../util/time";
-import { readSuccessResponseJsonOrThrow } from "../util/http";
+import { getHttpResponseErrorDetails, readSuccessResponseJsonOrThrow } from 
"../util/http";
 import { URL } from "../util/url";
 import { Logger } from "../util/logging";
 import { checkDbInvariant } from "../util/invariants";
@@ -132,11 +132,11 @@ export async function prepareTip(
 
 async function incrementTipRetry(
   ws: InternalWalletState,
-  refreshSessionId: string,
+  walletTipId: string,
   err: TalerErrorDetails | undefined,
 ): Promise<void> {
   await ws.db.runWithWriteTransaction([Stores.tips], async (tx) => {
-    const t = await tx.get(Stores.tips, refreshSessionId);
+    const t = await tx.get(Stores.tips, walletTipId);
     if (!t) {
       return;
     }
@@ -239,6 +239,23 @@ async function processTipImpl(
 
   const req = { planchets: planchetsDetail };
   const merchantResp = await ws.http.postJson(tipStatusUrl.href, req);
+
+  // Hide transient errors.
+  if (
+    tipRecord.retryInfo.retryCounter < 5 &&
+    merchantResp.status >= 500 &&
+    merchantResp.status <= 599
+  ) {
+    const err = makeErrorDetails(
+      TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR,
+      "tip pickup failed (transient)",
+      getHttpResponseErrorDetails(merchantResp),
+    );
+    await incrementTipRetry(ws, tipRecord.walletTipId, err);
+    // FIXME: Maybe we want to signal to the caller that the transient error 
happened?
+    return;
+  }
+
   const response = await readSuccessResponseJsonOrThrow(
     merchantResp,
     codecForTipResponse(),

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]