[tracker] libtracker-data: Refactor transaction-commit/rollback for error reporting
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Refactor transaction-commit/rollback for error reporting
- Date: Thu, 10 Feb 2011 15:36:03 +0000 (UTC)
commit f20ab9b0fb0656053668fd459c9d0a51769f76d1
Author: Philip Van Hoof <philip codeminded be>
Date: Wed Feb 9 15:26:45 2011 +0100
libtracker-data: Refactor transaction-commit/rollback for error reporting
src/libtracker-data/tracker-data-manager.c | 5 ---
src/libtracker-data/tracker-data-update.c | 40 +++++++++++++--------------
2 files changed, 19 insertions(+), 26 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index fb1a9c0..c4f2df6 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3660,7 +3660,6 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
tracker_data_commit_transaction (&internal_error);
if (internal_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, internal_error);
return FALSE;
}
@@ -3835,7 +3834,6 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
tracker_data_commit_transaction (&internal_error);
if (internal_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, internal_error);
return FALSE;
}
@@ -3902,7 +3900,6 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
tracker_data_commit_transaction (&internal_error);
if (internal_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, internal_error);
return FALSE;
}
@@ -3996,7 +3993,6 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
tracker_data_commit_transaction (&internal_error);
if (internal_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, internal_error);
return FALSE;
}
@@ -4053,7 +4049,6 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
tracker_data_commit_transaction (&internal_error);
if (internal_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, internal_error);
return FALSE;
}
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 64359a1..3a22369 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -162,7 +162,6 @@ static GPtrArray *commit_callbacks = NULL;
static GPtrArray *rollback_callbacks = NULL;
static gint max_service_id = 0;
static gint max_ontology_id = 0;
-static gboolean commit_failed = FALSE;
static gint ensure_resource_id (const gchar *uri,
gboolean *create);
@@ -2509,6 +2508,7 @@ tracker_data_commit_transaction (GError **error)
tracker_data_update_buffer_flush (&actual_error);
if (actual_error) {
+ tracker_data_rollback_transaction ();
g_propagate_error (error, actual_error);
return;
}
@@ -2517,7 +2517,7 @@ tracker_data_commit_transaction (GError **error)
&actual_error);
if (actual_error) {
- commit_failed = TRUE;
+ tracker_data_rollback_transaction ();
g_propagate_error (error, actual_error);
return;
}
@@ -2577,10 +2577,11 @@ tracker_data_notify_transaction (gboolean start_timer)
}
}
-static void
-tracker_data_rollback_journal_transaction (void)
+void
+tracker_data_rollback_transaction (void)
{
TrackerDBInterface *iface;
+ GError *ignorable = NULL;
g_return_if_fail (in_transaction);
@@ -2590,26 +2591,25 @@ tracker_data_rollback_journal_transaction (void)
iface = tracker_db_manager_get_db_interface ();
tracker_data_update_buffer_clear ();
- if (!commit_failed) {
- tracker_db_interface_execute_query (iface, NULL, "ROLLBACK");
- commit_failed = FALSE;
+
+ tracker_db_interface_execute_query (iface, &ignorable, "ROLLBACK");
+
+ if (ignorable) {
+ g_error_free (ignorable);
}
tracker_db_interface_execute_query (iface, NULL, "PRAGMA cache_size = %d", TRACKER_DB_CACHE_SIZE_DEFAULT);
-}
-void
-tracker_data_rollback_transaction (void)
-{
- tracker_data_rollback_journal_transaction ();
- tracker_db_journal_rollback_transaction ();
+ if (!in_journal_replay) {
+ 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 (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);
+ }
}
}
}
@@ -2643,7 +2643,6 @@ update_sparql (const gchar *update,
tracker_data_commit_transaction (&actual_error);
if (actual_error) {
- tracker_data_rollback_transaction ();
g_propagate_error (error, actual_error);
return NULL;
}
@@ -2738,7 +2737,6 @@ 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);
/* Oud of disk is an unrecoverable fatal error */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]