[tracker/error-handling] libtracker-data: Rollback transaction on (disk-space) failure in journal replayer
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/error-handling] libtracker-data: Rollback transaction on (disk-space) failure in journal replayer
- Date: Tue, 8 Feb 2011 17:20:55 +0000 (UTC)
commit 60d491f41ca9beadf3e3b5c03ae6d0228cbb53c8
Author: Philip Van Hoof <philip codeminded be>
Date: Tue Feb 8 18:20:09 2011 +0100
libtracker-data: Rollback transaction on (disk-space) failure in journal replayer
src/libtracker-data/tracker-data-update.c | 35 +++++++++++++++++++++-------
1 files changed, 26 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 2446fc9..35763e9 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -2577,8 +2577,9 @@ tracker_data_notify_transaction (gboolean start_timer)
}
}
-void
-tracker_data_rollback_transaction (void)
+
+static void
+tracker_data_rollback_transaction_shared (gboolean journal)
{
TrackerDBInterface *iface;
@@ -2596,18 +2597,33 @@ tracker_data_rollback_transaction (void)
}
tracker_db_interface_execute_query (iface, NULL, "PRAGMA cache_size = %d", TRACKER_DB_CACHE_SIZE_DEFAULT);
- tracker_db_journal_rollback_transaction ();
- if (rollback_callbacks) {
- guint n;
- for (n = 0; n < rollback_callbacks->len; n++) {
- TrackerCommitDelegate *delegate;
- delegate = g_ptr_array_index (rollback_callbacks, n);
- delegate->callback (TRUE, delegate->user_data);
+ if (!journal) {
+ tracker_db_journal_rollback_transaction ();
+
+ if (rollback_callbacks) {
+ guint n;
+ for (n = 0; n < rollback_callbacks->len; n++) {
+ TrackerCommitDelegate *delegate;
+ delegate = g_ptr_array_index (rollback_callbacks, n);
+ delegate->callback (TRUE, delegate->user_data);
+ }
}
}
}
+void
+tracker_data_rollback_transaction (void)
+{
+ tracker_data_rollback_transaction_shared (FALSE);
+}
+
+static void
+tracker_data_rollback_journal_transaction (void)
+{
+ tracker_data_rollback_transaction_shared (TRUE);
+}
+
static GPtrArray *
update_sparql (const gchar *update,
gboolean blank,
@@ -2731,6 +2747,7 @@ tracker_data_replay_journal (TrackerBusyCallback busy_callback,
tracker_data_commit_transaction (&new_error);
if (new_error) {
+ tracker_data_rollback_journal_transaction ();
g_warning ("Journal replay error: '%s'", new_error->message);
g_clear_error (&new_error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]