[tracker/tracker-0.6] Make sync/async flush functions to stop on any error.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker/tracker-0.6] Make sync/async flush functions to stop on any error.
- Date: Thu, 14 May 2009 08:30:43 -0400 (EDT)
commit 02e1110b38b40fcd08756d5a49af987b39599973
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu May 14 14:16:49 2009 +0200
Make sync/async flush functions to stop on any error.
---
src/libtracker-db/tracker-db-index.c | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/libtracker-db/tracker-db-index.c b/src/libtracker-db/tracker-db-index.c
index 42b5b92..383ada5 100644
--- a/src/libtracker-db/tracker-db-index.c
+++ b/src/libtracker-db/tracker-db-index.c
@@ -839,6 +839,7 @@ index_flush_item (gpointer user_data)
}
if (priv->cache_layers && g_hash_table_size (priv->cache_layers->data) > 0) {
+ gboolean error = FALSE;
GTimer *timer;
timer = g_timer_new ();
@@ -850,6 +851,7 @@ index_flush_item (gpointer user_data)
g_hash_table_iter_remove (&iter);
} else {
emit_error_received (indez, _("Index corrupted"));
+ error = TRUE;
break;
}
@@ -860,7 +862,14 @@ index_flush_item (gpointer user_data)
g_timer_destroy (timer);
- return TRUE;
+ if (!error) {
+ return TRUE;
+ } else {
+ set_in_flush (indez, FALSE);
+ priv->idle_flush_id = 0;
+
+ return FALSE;
+ }
} else {
GList *link;
@@ -1086,9 +1095,18 @@ tracker_db_index_flush_sync (TrackerDBIndex *indez)
}
for (cache = priv->cache_layers; cache; cache = cache->next) {
- g_hash_table_foreach_remove (cache->data,
- (GHRFunc) indexer_update_word,
- priv->index);
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_hash_table_iter_init (&iter, cache->data);
+
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ if (indexer_update_word (key, value, priv->index)) {
+ g_hash_table_iter_remove (&iter);
+ } else {
+ break;
+ }
+ }
}
g_list_foreach (priv->cache_layers, (GFunc) g_hash_table_destroy, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]