summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-28 11:27:32 +0100
committerFlorian Dold <florian@dold.me>2024-03-28 11:27:32 +0100
commit926da5a26507f296b10335ecea1931e07239acd6 (patch)
treebe2e0b289ab3cdd8cf2fb5926fe4c73122b3ff20 /packages
parentdb6aa9957400fae7e307294990382cf5c219ca37 (diff)
downloadwallet-core-926da5a26507f296b10335ecea1931e07239acd6.tar.gz
wallet-core-926da5a26507f296b10335ecea1931e07239acd6.tar.bz2
wallet-core-926da5a26507f296b10335ecea1931e07239acd6.zip
wallet-core: fix query in exchange update, logging
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-wallet-core/src/coinSelection.ts42
-rw-r--r--packages/taler-wallet-core/src/exchanges.ts5
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);