taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 0b29077048e90811cd86480a23916765d17c260a
parent 9811da5a8063e750acce65190db2466723b581fa
Author: Florian Dold <florian@dold.me>
Date:   Tue, 23 Jan 2024 10:37:39 +0100

idb-bridge: improve performance by waiting for macro tasks less often

Diffstat:
Mpackages/idb-bridge/src/bridge-idb.ts | 11++++++++++-
Mpackages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts | 8++++----
Mpackages/idb-bridge/src/testingdb.ts | 2+-
3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/packages/idb-bridge/src/bridge-idb.ts b/packages/idb-bridge/src/bridge-idb.ts @@ -2471,6 +2471,8 @@ export class BridgeIDBTransaction return this._committed || this._aborted; } + _counter = 0; + _openRequest: BridgeIDBOpenDBRequest | null = null; _backendTransaction?: DatabaseTransaction; @@ -2745,7 +2747,14 @@ export class BridgeIDBTransaction // with error handling already built into operation await operation(); } else { - await waitMacroQueue(); + this._counter++; + if (this._counter > 100) { + this._counter = 0; + // Give a chance for macro tasks to do something + // If we don't do this at all, we break WPT tests. + // If we always wait, performance is bad. + await waitMacroQueue(); + } let event; try { diff --git a/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts b/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts @@ -9,7 +9,7 @@ import { test.before("test DB initialization", initTestIndexedDB); -test("WPT test abort-in-initial-upgradeneeded.htm (subtest 1)", async (t) => { +test("WPT test event-dispatch-active-flag.html (subtest 1)", async (t) => { // Transactions are active during success handlers await indexeddb_test( t, @@ -57,7 +57,7 @@ test("WPT test abort-in-initial-upgradeneeded.htm (subtest 1)", async (t) => { ); }); -test("WPT test abort-in-initial-upgradeneeded.htm (subtest 2)", async (t) => { +test("WPT test event-dispatch-active-flag.html (subtest 2)", async (t) => { // Transactions are active during success listeners await indexeddb_test( t, @@ -103,7 +103,7 @@ test("WPT test abort-in-initial-upgradeneeded.htm (subtest 2)", async (t) => { ); }); -test("WPT test abort-in-initial-upgradeneeded.htm (subtest 3)", async (t) => { +test("WPT test event-dispatch-active-flag.html (subtest 3)", async (t) => { // Transactions are active during error handlers await indexeddb_test( t, @@ -152,7 +152,7 @@ test("WPT test abort-in-initial-upgradeneeded.htm (subtest 3)", async (t) => { ); }); -test("WPT test abort-in-initial-upgradeneeded.htm (subtest 4)", async (t) => { +test("WPT test event-dispatch-active-flag.html (subtest 4)", async (t) => { // Transactions are active during error listeners await indexeddb_test( t, diff --git a/packages/idb-bridge/src/testingdb.ts b/packages/idb-bridge/src/testingdb.ts @@ -31,7 +31,7 @@ export async function initTestIndexedDB(): Promise<void> { }); idbFactory = new BridgeIDBFactory(backend); - backend.enableTracing = true; + backend.enableTracing = false; BridgeIDBFactory.enableTracing = false; }