gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: -minor db optimiations, loggi


From: gnunet
Subject: [taler-wallet-core] branch master updated: -minor db optimiations, logging
Date: Tue, 26 Mar 2024 12:13:11 +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 738f3f495 -minor db optimiations, logging
738f3f495 is described below

commit 738f3f495785770c7eed3c2f9e0fbddcdb26ea7c
Author: Florian Dold <florian@dold.me>
AuthorDate: Tue Mar 26 12:13:06 2024 +0100

    -minor db optimiations, logging
---
 packages/taler-wallet-core/src/db.ts            |  6 ---
 packages/taler-wallet-core/src/exchanges.ts     | 61 +++++++++++++------------
 packages/taler-wallet-core/src/refresh.ts       |  6 +--
 packages/taler-wallet-core/src/wallet.ts        | 12 ++---
 packages/taler-wallet-core/src/withdraw.test.ts |  6 ---
 packages/taler-wallet-core/src/withdraw.ts      | 16 ++-----
 6 files changed, 46 insertions(+), 61 deletions(-)

diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index 8b7aede57..997d9c90a 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -502,12 +502,6 @@ export interface DenominationRecord {
    * on the denomination.
    */
   exchangeMasterPub: string;
-
-  /**
-   * Latest list issue date of the "/keys" response
-   * that includes this denomination.
-   */
-  listIssueDate: DbProtocolTimestamp;
 }
 
 export namespace DenominationRecord {
diff --git a/packages/taler-wallet-core/src/exchanges.ts 
b/packages/taler-wallet-core/src/exchanges.ts
index 43ab8ac4e..d501789a8 100644
--- a/packages/taler-wallet-core/src/exchanges.ts
+++ b/packages/taler-wallet-core/src/exchanges.ts
@@ -791,9 +791,6 @@ async function downloadExchangeKeysInfo(
             stampStart: timestampProtocolToDb(denomIn.stamp_start),
             verificationStatus: DenominationVerificationStatus.Unverified,
             masterSig: denomIn.master_sig,
-            listIssueDate: timestampProtocolToDb(
-              exchangeKeysJsonUnchecked.list_issue_date,
-            ),
             fees: {
               feeDeposit: Amounts.stringify(denomGroup.fee_deposit),
               feeRefresh: Amounts.stringify(denomGroup.fee_refresh),
@@ -906,6 +903,8 @@ async function startUpdateExchangeEntry(
     },
   );
 
+  logger.trace("created exchange record");
+
   if (notification) {
     wex.ws.notify(notification);
   }
@@ -1142,6 +1141,7 @@ async function waitReadyExchange(
     expectedMasterPub?: string;
   } = {},
 ): Promise<ReadyExchangeSummary> {
+  logger.trace(`waiting for exchange ${canonUrl} to become ready`);
   // FIXME: We should use Symbol.dispose magic here for cleanup!
 
   const exchangeNotifFlag = new AsyncFlag();
@@ -1263,6 +1263,7 @@ export async function updateExchangeFromUrlHandler(
     }
 
     if (!(updateNecessary || refreshCheckNecessary)) {
+      logger.trace("update not necessary, running again later");
       return TaskRunResult.runAgainAt(
         AbsoluteTime.min(nextUpdateStamp, nextRefreshCheckStamp),
       );
@@ -1429,15 +1430,20 @@ export async function updateExchangeFromUrlHandler(
         });
       }
 
+      // In the future: Filter out old denominations by index
+      const allOldDenoms =
+        await tx.denominations.indexes.byExchangeBaseUrl.getAll();
+      const oldDenomByDph = new Map<string, DenominationRecord>();
+      for (const denom of allOldDenoms) {
+        oldDenomByDph.set(denom.denomPubHash, denom);
+      }
+
       logger.trace("updating denominations in database");
       const currentDenomSet = new Set<string>(
         keysInfo.currentDenominations.map((x) => x.denomPubHash),
       );
       for (const currentDenom of keysInfo.currentDenominations) {
-        const oldDenom = await tx.denominations.get([
-          exchangeBaseUrl,
-          currentDenom.denomPubHash,
-        ]);
+        const oldDenom = oldDenomByDph.get(currentDenom.denomPubHash);
         if (oldDenom) {
           // FIXME: Do consistency check, report to auditor if necessary.
           // See https://bugs.taler.net/n/8594
@@ -1457,29 +1463,26 @@ export async function updateExchangeFromUrlHandler(
 
       // Update list issue date for all denominations,
       // and mark non-offered denominations as such.
-      await tx.denominations.indexes.byExchangeBaseUrl
-        .iter(r.baseUrl)
-        .forEachAsync(async (x) => {
-          if (!currentDenomSet.has(x.denomPubHash)) {
-            // FIXME: Here, an auditor report should be created, unless
-            // the denomination is really legally expired.
-            if (x.isOffered) {
-              x.isOffered = false;
-              logger.info(
-                `setting denomination ${x.denomPubHash} to offered=false`,
-              );
-            }
-          } else {
-            x.listIssueDate = timestampProtocolToDb(keysInfo.listIssueDate);
-            if (!x.isOffered) {
-              x.isOffered = true;
-              logger.info(
-                `setting denomination ${x.denomPubHash} to offered=true`,
-              );
-            }
+      for (const x of allOldDenoms) {
+        if (!currentDenomSet.has(x.denomPubHash)) {
+          // FIXME: Here, an auditor report should be created, unless
+          // the denomination is really legally expired.
+          if (x.isOffered) {
+            x.isOffered = false;
+            logger.info(
+              `setting denomination ${x.denomPubHash} to offered=false`,
+            );
           }
-          await tx.denominations.put(x);
-        });
+        } else {
+          if (!x.isOffered) {
+            x.isOffered = true;
+            logger.info(
+              `setting denomination ${x.denomPubHash} to offered=true`,
+            );
+          }
+        }
+        await tx.denominations.put(x);
+      }
 
       logger.trace("done updating denominations in database");
 
diff --git a/packages/taler-wallet-core/src/refresh.ts 
b/packages/taler-wallet-core/src/refresh.ts
index a92b3baf1..7c9ec84bd 100644
--- a/packages/taler-wallet-core/src/refresh.ts
+++ b/packages/taler-wallet-core/src/refresh.ts
@@ -400,9 +400,9 @@ async function provideRefreshSession(
 
       // FIXME: Use denom groups instead of querying all denominations!
       const availableDenoms: DenominationRecord[] =
-        await tx.denominations.indexes.byExchangeBaseUrl
-          .iter(exch.exchangeBaseUrl)
-          .toArray();
+        await tx.denominations.indexes.byExchangeBaseUrl.getAll(
+          exch.exchangeBaseUrl,
+        );
 
       const availableAmount = Amounts.sub(
         refreshGroup.inputPerCoin[coinIndex],
diff --git a/packages/taler-wallet-core/src/wallet.ts 
b/packages/taler-wallet-core/src/wallet.ts
index 1602eb158..e973f11e4 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -46,6 +46,7 @@ import {
   NotificationType,
   ObservabilityContext,
   ObservabilityEventType,
+  ObservableHttpClientLibrary,
   OpenedPromise,
   PartialWalletRunConfig,
   PrepareWithdrawExchangeRequest,
@@ -144,7 +145,6 @@ import {
   parseTalerUri,
   sampleWalletCoreTransactions,
   setDangerousTimetravel,
-  ObservableHttpClientLibrary,
   validateIban,
 } from "@gnu-taler/taler-util";
 import type { HttpRequestLibrary } from "@gnu-taler/taler-util/http";
@@ -521,9 +521,9 @@ async function dumpCoins(wex: WalletExecutionContext): 
Promise<CoinDumpJson> {
         ageCommitmentProof: c.ageCommitmentProof,
         spend_allocation: c.spendAllocation
           ? {
-            amount: c.spendAllocation.amount,
-            id: c.spendAllocation.id,
-          }
+              amount: c.spendAllocation.amount,
+              id: c.spendAllocation.id,
+            }
           : undefined,
       });
     }
@@ -691,7 +691,7 @@ async function dispatchRequestInternal<Op extends 
WalletApiOperation>(
     case WalletApiOperation.InitWallet: {
       const req = codecForInitRequest().decode(payload);
 
-      logger.info(`init request: ${req}`);
+      logger.info(`init request: ${j2s(req)}`);
 
       if (wex.ws.initCalled) {
         logger.warn(
@@ -1526,7 +1526,7 @@ async function handleCoreApiRequest(
     wex = getObservedWalletExecutionContext(ws, CancellationToken.CONTINUE, 
oc);
   } else {
     oc = {
-      observe(evt) { },
+      observe(evt) {},
     };
     wex = getNormalWalletExecutionContext(ws, CancellationToken.CONTINUE, oc);
   }
diff --git a/packages/taler-wallet-core/src/withdraw.test.ts 
b/packages/taler-wallet-core/src/withdraw.test.ts
index d8757d0cf..2a081b481 100644
--- a/packages/taler-wallet-core/src/withdraw.test.ts
+++ b/packages/taler-wallet-core/src/withdraw.test.ts
@@ -83,7 +83,6 @@ test("withdrawal selection bug repro", (t) => {
       verificationStatus: DenominationVerificationStatus.Unverified,
       currency: "KUDOS",
       value: "KUDOS:1000" as AmountString,
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
     {
       denomPub: {
@@ -138,7 +137,6 @@ test("withdrawal selection bug repro", (t) => {
       verificationStatus: DenominationVerificationStatus.Unverified,
       value: "KUDOS:10" as AmountString,
       currency: "KUDOS",
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
     {
       denomPub: {
@@ -192,7 +190,6 @@ test("withdrawal selection bug repro", (t) => {
       verificationStatus: DenominationVerificationStatus.Unverified,
       value: "KUDOS:5" as AmountString,
       currency: "KUDOS",
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
     {
       denomPub: {
@@ -247,7 +244,6 @@ test("withdrawal selection bug repro", (t) => {
       verificationStatus: DenominationVerificationStatus.Unverified,
       value: "KUDOS:1" as AmountString,
       currency: "KUDOS",
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
     {
       denomPub: {
@@ -305,7 +301,6 @@ test("withdrawal selection bug repro", (t) => {
         value: 0,
       }),
       currency: "KUDOS",
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
     {
       denomPub: {
@@ -359,7 +354,6 @@ test("withdrawal selection bug repro", (t) => {
       verificationStatus: DenominationVerificationStatus.Unverified,
       value: "KUDOS:2" as AmountString,
       currency: "KUDOS",
-      listIssueDate: timestampProtocolToDb({ t_s: 0 }),
     },
   ];
 
diff --git a/packages/taler-wallet-core/src/withdraw.ts 
b/packages/taler-wallet-core/src/withdraw.ts
index 9d9d2bea6..6a9d27fe8 100644
--- a/packages/taler-wallet-core/src/withdraw.ts
+++ b/packages/taler-wallet-core/src/withdraw.ts
@@ -463,36 +463,31 @@ export function computeWithdrawalTransactionStatus(
         major: TransactionMajorState.Suspended,
         minor: TransactionMinorState.BankConfirmTransfer,
       };
-    case WithdrawalGroupStatus.SuspendedReady: {
+    case WithdrawalGroupStatus.SuspendedReady:
       return {
         major: TransactionMajorState.Suspended,
         minor: TransactionMinorState.WithdrawCoins,
       };
-    }
-    case WithdrawalGroupStatus.PendingAml: {
+    case WithdrawalGroupStatus.PendingAml:
       return {
         major: TransactionMajorState.Pending,
         minor: TransactionMinorState.AmlRequired,
       };
-    }
-    case WithdrawalGroupStatus.PendingKyc: {
+    case WithdrawalGroupStatus.PendingKyc:
       return {
         major: TransactionMajorState.Pending,
         minor: TransactionMinorState.KycRequired,
       };
-    }
-    case WithdrawalGroupStatus.SuspendedAml: {
+    case WithdrawalGroupStatus.SuspendedAml:
       return {
         major: TransactionMajorState.Suspended,
         minor: TransactionMinorState.AmlRequired,
       };
-    }
-    case WithdrawalGroupStatus.SuspendedKyc: {
+    case WithdrawalGroupStatus.SuspendedKyc:
       return {
         major: TransactionMajorState.Suspended,
         minor: TransactionMinorState.KycRequired,
       };
-    }
     case WithdrawalGroupStatus.FailedAbortingBank:
       return {
         major: TransactionMajorState.Failed,
@@ -503,7 +498,6 @@ export function computeWithdrawalTransactionStatus(
         major: TransactionMajorState.Aborted,
         minor: TransactionMinorState.Exchange,
       };
-
     case WithdrawalGroupStatus.AbortedBank:
       return {
         major: TransactionMajorState.Aborted,

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