summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-07-17 17:56:25 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-07-20 18:27:32 +0200
commitd5c79e87bc1284f925e2c155f03312da7fd0a4ab (patch)
tree1a09006308697c656c99ca9b9ec19452cab07679
parent85e58a5219b66f77cbb534c0de39563ff50ec9a9 (diff)
downloadtracker-d5c79e87bc1284f925e2c155f03312da7fd0a4ab.tar.gz
libtracker-direct: Avoid WAL checkpoint on readonly connections
There is no point in doing WAL checkpoints from a readonly connection, so avoid it altogether.
-rw-r--r--src/libtracker-direct/tracker-direct.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libtracker-direct/tracker-direct.c b/src/libtracker-direct/tracker-direct.c
index c3ff4d004..4b8d74a73 100644
--- a/src/libtracker-direct/tracker-direct.c
+++ b/src/libtracker-direct/tracker-direct.c
@@ -217,6 +217,9 @@ wal_hook (TrackerDBInterface *iface,
TrackerDataManager *data_manager = tracker_db_interface_get_user_data (iface);
TrackerDBInterface *wal_iface = tracker_data_manager_get_wal_db_interface (data_manager);
+ if (!wal_iface)
+ return;
+
if (n_pages >= 10000) {
/* Do immediate checkpointing (blocking updates) to
* prevent excessive WAL file growth.
@@ -383,7 +386,8 @@ tracker_direct_connection_finalize (GObject *object)
if (priv->data_manager) {
TrackerDBInterface *wal_iface;
wal_iface = tracker_data_manager_get_wal_db_interface (priv->data_manager);
- tracker_db_interface_sqlite_wal_checkpoint (wal_iface, TRUE, NULL);
+ if (wal_iface)
+ tracker_db_interface_sqlite_wal_checkpoint (wal_iface, TRUE, NULL);
}
g_clear_object (&priv->store);
@@ -879,5 +883,6 @@ tracker_direct_connection_sync (TrackerDirectConnection *conn)
set_up_thread_pools (conn, NULL);
wal_iface = tracker_data_manager_get_wal_db_interface (priv->data_manager);
- tracker_db_interface_sqlite_wal_checkpoint (wal_iface, TRUE, NULL);
+ if (wal_iface)
+ tracker_db_interface_sqlite_wal_checkpoint (wal_iface, TRUE, NULL);
}