run pending operations at least once, style fixes
This commit is contained in:
parent
defc393d6e
commit
c0e6b6d0f6
@ -1065,5 +1065,6 @@ export function main() {
|
||||
logger.warn("Allowing withdrawal of late denominations for debugging");
|
||||
walletCoreDebugFlags.denomselAllowLate = true;
|
||||
}
|
||||
logger.trace(`running wallet-cli with`, process.argv);
|
||||
walletCli.run();
|
||||
}
|
||||
|
@ -1620,6 +1620,7 @@ export class WalletCli {
|
||||
const self = this;
|
||||
this._client = {
|
||||
async call(op: any, payload: any): Promise<any> {
|
||||
console.log("calling wallet with timetravel arg", self.timetravelArg);
|
||||
const resp = await sh(
|
||||
self.globalTestState,
|
||||
`wallet-${self.name}`,
|
||||
|
@ -62,6 +62,7 @@ async function applyTimeTravel(
|
||||
}
|
||||
|
||||
if (s.wallet) {
|
||||
console.log("setting wallet time travel to", timetravelDuration);
|
||||
s.wallet.setTimetravel(timetravelDuration);
|
||||
}
|
||||
}
|
||||
@ -139,6 +140,7 @@ export async function runTimetravelAutorefreshTest(t: GlobalTestState) {
|
||||
|
||||
// Travel into the future, the deposit expiration is two years
|
||||
// into the future.
|
||||
console.log("applying first time travel");
|
||||
await applyTimeTravel(durationFromSpec({ days: 400 }), {
|
||||
wallet,
|
||||
exchange,
|
||||
@ -164,6 +166,7 @@ export async function runTimetravelAutorefreshTest(t: GlobalTestState) {
|
||||
|
||||
// Travel into the future, the deposit expiration is two years
|
||||
// into the future.
|
||||
console.log("applying second time travel");
|
||||
await applyTimeTravel(durationFromSpec({ years: 2, months: 6 }), {
|
||||
wallet,
|
||||
exchange,
|
||||
|
@ -147,6 +147,7 @@ async function refreshCreateSession(
|
||||
throw Error("db inconsistent: exchange of coin not found");
|
||||
}
|
||||
|
||||
|
||||
const { availableAmount, availableDenoms } = await ws.db
|
||||
.mktx((x) => ({
|
||||
denominations: x.denominations,
|
||||
@ -161,6 +162,7 @@ async function refreshCreateSession(
|
||||
throw Error("db inconsistent: denomination for coin not found");
|
||||
}
|
||||
|
||||
// FIXME: use an index here, based on the withdrawal expiration time.
|
||||
const availableDenoms: DenominationRecord[] = await tx.denominations.indexes.byExchangeBaseUrl
|
||||
.iter(exchange.baseUrl)
|
||||
.toArray();
|
||||
@ -913,7 +915,15 @@ export async function autoRefresh(
|
||||
}
|
||||
}
|
||||
if (refreshCoins.length > 0) {
|
||||
await createRefreshGroup(ws, tx, refreshCoins, RefreshReason.Scheduled);
|
||||
const res = await createRefreshGroup(
|
||||
ws,
|
||||
tx,
|
||||
refreshCoins,
|
||||
RefreshReason.Scheduled,
|
||||
);
|
||||
logger.info(
|
||||
`created refresh group for auto-refresh (${res.refreshGroupId})`,
|
||||
);
|
||||
}
|
||||
logger.info(
|
||||
`current wallet time: ${timestampToIsoString(getTimestampNow())}`,
|
||||
|
@ -17,7 +17,6 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import * as LibtoolVersion from "@gnu-taler/taler-util";
|
||||
import {
|
||||
AmountJson,
|
||||
Amounts,
|
||||
@ -41,6 +40,7 @@ import {
|
||||
WithdrawResponse,
|
||||
URL,
|
||||
WithdrawUriInfoResponse,
|
||||
VersionMatchResult,
|
||||
} from "@gnu-taler/taler-util";
|
||||
import {
|
||||
CoinRecord,
|
||||
@ -143,7 +143,7 @@ interface ExchangeWithdrawDetails {
|
||||
*
|
||||
* Older exchanges don't return version information.
|
||||
*/
|
||||
versionMatch: LibtoolVersion.VersionMatchResult | undefined;
|
||||
versionMatch: VersionMatchResult | undefined;
|
||||
|
||||
/**
|
||||
* Libtool-style version string for the exchange or "unknown"
|
||||
@ -693,15 +693,15 @@ export async function updateWithdrawalDenoms(
|
||||
while (current < denominations.length) {
|
||||
const updatedDenominations: DenominationRecord[] = [];
|
||||
// Do a batch of batchSize
|
||||
for (let batchIdx = 0; batchIdx < batchSize; batchIdx++) {
|
||||
current++;
|
||||
if (current >= denominations.length) {
|
||||
break;
|
||||
}
|
||||
for (
|
||||
let batchIdx = 0;
|
||||
batchIdx < batchSize && current < denominations.length;
|
||||
batchIdx++, current++
|
||||
) {
|
||||
const denom = denominations[current];
|
||||
if (denom.status === DenominationStatus.Unverified) {
|
||||
logger.trace(
|
||||
`Validation denomination (${current + 1}/${
|
||||
`Validating denomination (${current + 1}/${
|
||||
denominations.length
|
||||
}) signature of ${denom.denomPubHash}`,
|
||||
);
|
||||
@ -939,7 +939,7 @@ export async function getExchangeWithdrawalInfo(
|
||||
|
||||
let versionMatch;
|
||||
if (exchangeDetails.protocolVersion) {
|
||||
versionMatch = LibtoolVersion.compare(
|
||||
versionMatch = compare(
|
||||
WALLET_EXCHANGE_PROTOCOL_VERSION,
|
||||
exchangeDetails.protocolVersion,
|
||||
);
|
||||
|
@ -333,7 +333,7 @@ async function runTaskLoop(
|
||||
}
|
||||
}
|
||||
|
||||
if (opts.stopWhenDone && numGivingLiveness === 0) {
|
||||
if (opts.stopWhenDone && numGivingLiveness === 0 && iteration !== 0) {
|
||||
logger.warn(`stopping, as no pending operations have lifeness`);
|
||||
return;
|
||||
}
|
||||
@ -970,15 +970,11 @@ export class Wallet {
|
||||
this.ws.stop();
|
||||
}
|
||||
|
||||
runRetryLoop(): Promise<void> {
|
||||
return runTaskLoop(this.ws);
|
||||
}
|
||||
|
||||
runPending(forceNow: boolean = false) {
|
||||
return runPending(this.ws, forceNow);
|
||||
}
|
||||
|
||||
runTaskLoop(opts: RetryLoopOpts) {
|
||||
runTaskLoop(opts?: RetryLoopOpts) {
|
||||
return runTaskLoop(this.ws, opts);
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ class NativeWalletMessageHandler {
|
||||
const w = await getDefaultNodeWallet(this.walletArgs);
|
||||
this.maybeWallet = w;
|
||||
await w.handleCoreApiRequest("initWallet", "native-init", {});
|
||||
w.runRetryLoop().catch((e) => {
|
||||
w.runTaskLoop().catch((e) => {
|
||||
console.error("Error during wallet retry loop", e);
|
||||
});
|
||||
this.wp.resolve(w);
|
||||
|
@ -49,7 +49,7 @@ import { BrowserCryptoWorkerFactory } from "./browserCryptoWorkerFactory";
|
||||
/**
|
||||
* Currently active wallet instance. Might be unloaded and
|
||||
* re-instantiated when the database is reset.
|
||||
*
|
||||
*
|
||||
* FIXME: Maybe move the wallet resetting into the Wallet class?
|
||||
*/
|
||||
let currentWallet: Wallet | undefined;
|
||||
@ -215,8 +215,10 @@ function makeSyncWalletRedirect(
|
||||
): Record<string, unknown> {
|
||||
const innerUrl = new URL(chrome.extension.getURL(url));
|
||||
if (params) {
|
||||
const hParams = Object.keys(params).map(k => `${k}=${params[k]}`).join('&')
|
||||
innerUrl.hash = innerUrl.hash + '?' + hParams
|
||||
const hParams = Object.keys(params)
|
||||
.map((k) => `${k}=${params[k]}`)
|
||||
.join("&");
|
||||
innerUrl.hash = innerUrl.hash + "?" + hParams;
|
||||
}
|
||||
if (isFirefox()) {
|
||||
// Some platforms don't support the sync redirect (yet), so fall back to
|
||||
@ -272,8 +274,8 @@ async function reinitWallet(): Promise<void> {
|
||||
}
|
||||
}
|
||||
});
|
||||
wallet.runRetryLoop().catch((e) => {
|
||||
console.log("error during wallet retry loop", e);
|
||||
wallet.runTaskLoop().catch((e) => {
|
||||
console.log("error during wallet task loop", e);
|
||||
});
|
||||
// Useful for debugging in the background page.
|
||||
(window as any).talerWallet = wallet;
|
||||
|
Loading…
Reference in New Issue
Block a user