gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: wallet-core: fix query in exc


From: gnunet
Subject: [taler-wallet-core] branch master updated: wallet-core: fix query in exchange update, logging
Date: Thu, 28 Mar 2024 11:27:43 +0100

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

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

The following commit(s) were added to refs/heads/master by this push:
     new 926da5a26 wallet-core: fix query in exchange update, logging
926da5a26 is described below

commit 926da5a26507f296b10335ecea1931e07239acd6
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Mar 28 11:27:32 2024 +0100

    wallet-core: fix query in exchange update, logging
---
 packages/taler-wallet-core/src/coinSelection.ts | 42 +++++++++++++++++++++++--
 packages/taler-wallet-core/src/exchanges.ts     |  5 ++-
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/packages/taler-wallet-core/src/coinSelection.ts 
b/packages/taler-wallet-core/src/coinSelection.ts
index cf323e586..6e3ef5917 100644
--- a/packages/taler-wallet-core/src/coinSelection.ts
+++ b/packages/taler-wallet-core/src/coinSelection.ts
@@ -199,7 +199,13 @@ export async function selectPayCoins(
         },
       );
 
-      logger.trace(`wire fees per exchange: ${j2s(wireFeesPerExchange)}`);
+      if (logger.shouldLogTrace()) {
+        logger.trace(
+          `instructed amount: ${Amounts.stringify(req.contractTermsAmount)}`,
+        );
+        logger.trace(`wire fees per exchange: ${j2s(wireFeesPerExchange)}`);
+        logger.trace(`candidates: ${j2s(candidateDenoms)}`);
+      }
 
       const coinRes: SelectedCoin[] = [];
       const currency = contractTermsAmount.currency;
@@ -750,6 +756,8 @@ async function selectPayCandidates(
 ): Promise<[AvailableDenom[], Record<string, AmountJson>]> {
   // FIXME: Use the existing helper (from balance.ts) to
   // get acceptable exchanges.
+  logger.shouldLogTrace() &&
+    logger.trace(`selecting available coin candidates for ${j2s(req)}`);
   const denoms: AvailableDenom[] = [];
   const exchanges = await tx.exchanges.iter().toArray();
   const wfPerExchange: Record<string, AmountJson> = {};
@@ -760,6 +768,8 @@ async function selectPayCandidates(
     );
     // 1. exchange has same currency
     if (exchangeDetails?.currency !== req.instructedAmount.currency) {
+      logger.shouldLogTrace() &&
+        logger.trace(`skipping ${exchange.baseUrl} due to currency mismatch`);
       continue;
     }
 
@@ -771,6 +781,11 @@ async function selectPayCandidates(
         exchangeDetails,
       );
       if (!wire) {
+        if (logger.shouldLogTrace()) {
+          logger.trace(
+            `skipping ${exchange.baseUrl} due to missing wire info mismatch`,
+          );
+        }
         continue;
       }
       wfPerExchange[exchange.baseUrl] = wire.wireFee;
@@ -782,6 +797,9 @@ async function selectPayCandidates(
       req.restrictExchanges,
     );
     if (!accepted) {
+      if (logger.shouldLogTrace()) {
+        logger.trace(`skipping ${exchange.baseUrl} due to unacceptability`);
+      }
       continue;
     }
 
@@ -800,6 +818,14 @@ async function selectPayCandidates(
         ),
       );
 
+    if (logger.shouldLogTrace()) {
+      logger.trace(
+        `exchange ${exchange.baseUrl} has ${myExchangeCoins.length} candidate 
records`,
+      );
+    }
+
+    let numUsable = 0;
+
     // 5. save denoms with how many coins are available
     // FIXME: Check that the individual denomination is audited!
     // FIXME: Should we exclude denominations that are
@@ -810,15 +836,27 @@ async function selectPayCandidates(
         coinAvail.denomPubHash,
       ]);
       checkDbInvariant(!!denom);
-      if (denom.isRevoked || !denom.isOffered) {
+      if (denom.isRevoked) {
+        logger.trace("denom is revoked");
+        continue;
+      }
+      if (!denom.isOffered) {
+        logger.trace("denom is unoffered");
         continue;
       }
+      numUsable++;
       denoms.push({
         ...DenominationRecord.toDenomInfo(denom),
         numAvailable: coinAvail.freshCoinCount ?? 0,
         maxAge: coinAvail.maxAge,
       });
     }
+
+    if (logger.shouldLogTrace()) {
+      logger.trace(
+        `exchange ${exchange.baseUrl} has ${numUsable} candidate records with 
usable denominations`,
+      );
+    }
   }
   // Sort by available amount (descending),  deposit fee (ascending) and
   // denomPub (ascending) if deposit fee is the same
diff --git a/packages/taler-wallet-core/src/exchanges.ts 
b/packages/taler-wallet-core/src/exchanges.ts
index e3426b0ae..fa8de7fff 100644
--- a/packages/taler-wallet-core/src/exchanges.ts
+++ b/packages/taler-wallet-core/src/exchanges.ts
@@ -1393,6 +1393,7 @@ export async function updateExchangeFromUrlHandler(
   let recoupGroupId: string | undefined;
 
   logger.trace("updating exchange info in database");
+  logger.trace(j2s(keysInfo));
 
   let detailsPointerChanged = false;
 
@@ -1496,7 +1497,9 @@ export async function updateExchangeFromUrlHandler(
 
       // In the future: Filter out old denominations by index
       const allOldDenoms =
-        await tx.denominations.indexes.byExchangeBaseUrl.getAll();
+        await tx.denominations.indexes.byExchangeBaseUrl.getAll(
+          exchangeBaseUrl,
+        );
       const oldDenomByDph = new Map<string, DenominationRecord>();
       for (const denom of allOldDenoms) {
         oldDenomByDph.set(denom.denomPubHash, denom);

-- 
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]