@@ -1308,6 +1308,15 @@ impl VfsContext {
13081308 {
13091309 Ok ( outcome) => outcome,
13101310 Err ( err) => {
1311+ tracing:: error!(
1312+ actor_id = %self . actor_id,
1313+ generation = request. generation,
1314+ expected_head_txid = request. expected_head_txid,
1315+ new_db_size_pages = request. new_db_size_pages,
1316+ dirty_pages = request. dirty_pages. len( ) ,
1317+ ?err,
1318+ "sqlite flush commit failed"
1319+ ) ;
13111320 mark_dead_for_non_fence_commit_error ( self , & err) ;
13121321 return Err ( err) ;
13131322 }
@@ -1387,6 +1396,15 @@ impl VfsContext {
13871396 {
13881397 Ok ( outcome) => outcome,
13891398 Err ( err) => {
1399+ tracing:: error!(
1400+ actor_id = %self . actor_id,
1401+ generation = request. generation,
1402+ expected_head_txid = request. expected_head_txid,
1403+ new_db_size_pages = request. new_db_size_pages,
1404+ dirty_pages = request. dirty_pages. len( ) ,
1405+ ?err,
1406+ "sqlite atomic commit failed"
1407+ ) ;
13901408 mark_dead_for_non_fence_commit_error ( self , & err) ;
13911409 return Err ( err) ;
13921410 }
@@ -1460,13 +1478,22 @@ fn assert_batch_atomic_probe(db: *mut sqlite3, vfs: &SqliteVfs) -> std::result::
14601478 ";
14611479
14621480 if let Err ( err) = sqlite_exec ( db, probe_sql) {
1481+ tracing:: error!(
1482+ %err,
1483+ last_error = ?vfs. clone_last_error( ) ,
1484+ commit_atomic_before,
1485+ "sqlite batch atomic probe failed"
1486+ ) ;
14631487 cleanup_batch_atomic_probe ( db) ;
14641488 return Err ( format ! ( "batch atomic probe failed: {err}" ) ) ;
14651489 }
14661490
14671491 let commit_atomic_after = vfs. commit_atomic_count ( ) ;
14681492 if commit_atomic_after == commit_atomic_before {
14691493 tracing:: error!(
1494+ commit_atomic_before,
1495+ commit_atomic_after,
1496+ last_error = ?vfs. clone_last_error( ) ,
14701497 "batch atomic writes not active for sqlite, SQLITE_ENABLE_BATCH_ATOMIC_WRITE may be missing"
14711498 ) ;
14721499 cleanup_batch_atomic_probe ( db) ;
@@ -2215,6 +2242,12 @@ unsafe extern "C" fn io_sync(p_file: *mut sqlite3_file, _flags: c_int) -> c_int
22152242 match ctx. flush_dirty_pages( ) {
22162243 Ok ( _) => SQLITE_OK ,
22172244 Err ( err) => {
2245+ tracing:: error!(
2246+ actor_id = %ctx. actor_id,
2247+ last_error = ?ctx. clone_last_error( ) ,
2248+ ?err,
2249+ "sqlite sync failed"
2250+ ) ;
22182251 mark_dead_from_fence_commit_error( ctx, & err) ;
22192252 SQLITE_IOERR_FSYNC
22202253 }
@@ -2280,6 +2313,12 @@ unsafe extern "C" fn io_file_control(
22802313 SQLITE_OK
22812314 }
22822315 Err ( err) => {
2316+ tracing:: error!(
2317+ actor_id = %ctx. actor_id,
2318+ last_error = ?ctx. clone_last_error( ) ,
2319+ ?err,
2320+ "sqlite atomic write file control failed"
2321+ ) ;
22832322 mark_dead_from_fence_commit_error( ctx, & err) ;
22842323 SQLITE_IOERR
22852324 }
@@ -2532,6 +2571,10 @@ impl SqliteVfs {
25322571 unsafe { ( * self . ctx_ptr ) . take_last_error ( ) }
25332572 }
25342573
2574+ fn clone_last_error ( & self ) -> Option < String > {
2575+ unsafe { ( * self . ctx_ptr ) . clone_last_error ( ) }
2576+ }
2577+
25352578 fn register_with_transport (
25362579 name : & str ,
25372580 transport : SqliteTransport ,
@@ -2659,6 +2702,13 @@ pub fn open_database(
26592702 } ;
26602703 if rc != SQLITE_OK {
26612704 let message = sqlite_error_message ( db) ;
2705+ tracing:: error!(
2706+ file_name,
2707+ rc,
2708+ %message,
2709+ last_error = ?vfs. clone_last_error( ) ,
2710+ "failed to open sqlite database with custom VFS"
2711+ ) ;
26622712 if !db. is_null ( ) {
26632713 unsafe {
26642714 sqlite3_close ( db) ;
@@ -2676,6 +2726,13 @@ pub fn open_database(
26762726 "PRAGMA locking_mode = EXCLUSIVE;" ,
26772727 ] {
26782728 if let Err ( err) = sqlite_exec ( db, pragma) {
2729+ tracing:: error!(
2730+ file_name,
2731+ pragma,
2732+ %err,
2733+ last_error = ?vfs. clone_last_error( ) ,
2734+ "failed to configure sqlite database"
2735+ ) ;
26792736 unsafe {
26802737 sqlite3_close ( db) ;
26812738 }
@@ -2684,6 +2741,12 @@ pub fn open_database(
26842741 }
26852742
26862743 if let Err ( err) = assert_batch_atomic_probe ( db, & vfs) {
2744+ tracing:: error!(
2745+ file_name,
2746+ %err,
2747+ last_error = ?vfs. clone_last_error( ) ,
2748+ "failed to verify sqlite batch atomic writes"
2749+ ) ;
26872750 unsafe {
26882751 sqlite3_close ( db) ;
26892752 }
0 commit comments