[tracker/error-handling] libtracker-data: Rollback transaction on (disk-space) failure in journal replayer



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]