diff --git a/bindings/javascript/sync/packages/browser/promise.test.ts b/bindings/javascript/sync/packages/browser/promise.test.ts index bdced08fa..e30163af0 100644 --- a/bindings/javascript/sync/packages/browser/promise.test.ts +++ b/bindings/javascript/sync/packages/browser/promise.test.ts @@ -241,6 +241,7 @@ test('persistence-pull-push', async () => { const db1 = await connect({ path: path1, url: process.env.VITE_TURSO_DB_URL }); await db1.exec(`INSERT INTO q VALUES ('k1', 'v1')`); await db1.exec(`INSERT INTO q VALUES ('k2', 'v2')`); + const stats1 = await db1.stats(); const db2 = await connect({ path: path2, url: process.env.VITE_TURSO_DB_URL }); await db2.exec(`INSERT INTO q VALUES ('k3', 'v3')`); @@ -248,6 +249,9 @@ test('persistence-pull-push', async () => { await Promise.all([db1.push(), db2.push()]); await Promise.all([db1.pull(), db2.pull()]); + const stats2 = await db1.stats(); + console.info(stats1, stats2); + expect(stats1.revision).not.toBe(stats2.revision); const rows1 = await db1.prepare('SELECT * FROM q').all(); const rows2 = await db2.prepare('SELECT * FROM q').all(); diff --git a/bindings/javascript/sync/packages/browser/promise.ts b/bindings/javascript/sync/packages/browser/promise.ts index 45d1d75c6..3f43b81b6 100644 --- a/bindings/javascript/sync/packages/browser/promise.ts +++ b/bindings/javascript/sync/packages/browser/promise.ts @@ -1,6 +1,6 @@ import { registerFileAtWorker, unregisterFileAtWorker } from "@tursodatabase/database-browser-common" import { DatabasePromise, DatabaseOpts, NativeDatabase } from "@tursodatabase/database-common" -import { ProtocolIo, run, SyncOpts, RunOpts, memoryIO } from "@tursodatabase/sync-common"; +import { ProtocolIo, run, SyncOpts, RunOpts, memoryIO, SyncEngineStats } from "@tursodatabase/sync-common"; let BrowserIo: ProtocolIo = { async read(path: string): Promise { @@ -44,7 +44,7 @@ class Database extends DatabasePromise { async checkpoint() { await run(this.runOpts, this.io, this.engine, this.engine.checkpoint()); } - async stats(): Promise<{ operations: number, mainWal: number, revertWal: number, lastPullUnixTime: number, lastPushUnixTime: number | null }> { + async stats(): Promise { return (await run(this.runOpts, this.io, this.engine, this.engine.stats())); } override async close(): Promise { diff --git a/bindings/javascript/sync/packages/native/promise.test.ts b/bindings/javascript/sync/packages/native/promise.test.ts index 8b30a72af..cae58db11 100644 --- a/bindings/javascript/sync/packages/native/promise.test.ts +++ b/bindings/javascript/sync/packages/native/promise.test.ts @@ -261,6 +261,7 @@ test('persistence-pull-push', async () => { const db1 = await connect({ path: path1, url: process.env.VITE_TURSO_DB_URL }); await db1.exec(`INSERT INTO q VALUES ('k1', 'v1')`); await db1.exec(`INSERT INTO q VALUES ('k2', 'v2')`); + const stats1 = await db1.stats(); const db2 = await connect({ path: path2, url: process.env.VITE_TURSO_DB_URL }); await db2.exec(`INSERT INTO q VALUES ('k3', 'v3')`); @@ -268,6 +269,9 @@ test('persistence-pull-push', async () => { await Promise.all([db1.push(), db2.push()]); await Promise.all([db1.pull(), db2.pull()]); + const stats2 = await db1.stats(); + console.info(stats1, stats2); + expect(stats1.revision).not.toBe(stats2.revision); const rows1 = await db1.prepare('SELECT * FROM q').all(); const rows2 = await db2.prepare('SELECT * FROM q').all(); diff --git a/sync/engine/src/database_sync_engine.rs b/sync/engine/src/database_sync_engine.rs index 6ee1aa174..1bf15da65 100644 --- a/sync/engine/src/database_sync_engine.rs +++ b/sync/engine/src/database_sync_engine.rs @@ -253,10 +253,8 @@ impl DatabaseSyncEngine

{ }); let last_push_unix_time = self.meta().last_push_unix_time; let revert_wal_path = &self.revert_db_wal_path; - let revert_wal_file = self - .io - .open_file(revert_wal_path, OpenFlags::all(), false)?; - let revert_wal_size = revert_wal_file.size()?; + let revert_wal_file = self.io.try_open(revert_wal_path)?; + let revert_wal_size = revert_wal_file.map(|f| f.size()).transpose()?.unwrap_or(0); let main_wal_frames = main_conn.wal_state()?.max_frame; let main_wal_size = if main_wal_frames == 0 { 0