[tracker-miners/sam/index-file-sync] Don't ignore errors when making IndexFile call



commit b99fa4ca75e61590dbf56aafe659b1ae343be962
Author: Sam Thursfield <sam afuera me uk>
Date:   Mon Mar 30 02:35:12 2020 +0200

    Don't ignore errors when making IndexFile call

 src/tracker/tracker-index.c           | 26 ++++++++++++++++++++++++--
 src/tracker/tracker-indexing-status.c | 27 ++++++++++++++++++---------
 2 files changed, 42 insertions(+), 11 deletions(-)
---
diff --git a/src/tracker/tracker-index.c b/src/tracker/tracker-index.c
index d625a5c23..c33621fd6 100644
--- a/src/tracker/tracker-index.c
+++ b/src/tracker/tracker-index.c
@@ -110,8 +110,30 @@ index_file_cb (GObject      *source_object,
                gpointer      user_data)
 {
        GMainLoop *loop = user_data;
+       GError *error = NULL;
+
+       tracker_miner_manager_index_file_finish (TRACKER_MINER_MANAGER (source_object), res, &error);
+
+       if (error) {
+               g_error (error->message);
+       }
+
+       g_main_loop_quit (loop);
+}
+
+static void
+index_file_for_process_cb (GObject      *source_object,
+               GAsyncResult *res,
+               gpointer      user_data)
+{
+       GMainLoop *loop = user_data;
+       GError *error = NULL;
+
+       tracker_miner_manager_index_file_for_process_finish (TRACKER_MINER_MANAGER (source_object), res, 
NULL);
 
-       tracker_miner_manager_index_file_finish (TRACKER_MINER_MANAGER (source_object), res, NULL);
+       if (error) {
+               g_error (error->message);
+       }
 
        g_main_loop_quit (loop);
 }
@@ -191,7 +213,7 @@ index_run (void)
                file = g_file_new_for_commandline_arg (*p);
 
                if (monitor_mode) {
-                       status = tracker_miner_manager_index_file_for_process_async (manager, file, NULL, 
index_file_cb, main_loop);
+                       status = tracker_miner_manager_index_file_for_process_async (manager, file, NULL, 
index_file_for_process_cb, main_loop);
                } else {
                        status = tracker_miner_manager_index_file_async (manager, file, NULL, index_file_cb, 
main_loop);
                }
diff --git a/src/tracker/tracker-indexing-status.c b/src/tracker/tracker-indexing-status.c
index cadc34c74..c32ec8422 100644
--- a/src/tracker/tracker-indexing-status.c
+++ b/src/tracker/tracker-indexing-status.c
@@ -553,17 +553,22 @@ tracker_indexing_status_get_errors (TrackerIndexingStatus *status)
 
        g_rw_lock_reader_lock (&priv->lock);
 
-       g_hash_table_iter_init (&iter, priv->failed);
-       while (g_hash_table_iter_next (&iter, (gpointer *)&key, (gpointer *)&value)) {
-               gchar *message;
-               gchar *uri;
+       if (g_task_had_error (priv->task)) {
+               /* The caller should have collected this error from the GAsyncResult. */
+               result = g_list_prepend (result, g_strdup ("Failure calling the index method."));
+       } else {
+               g_hash_table_iter_init (&iter, priv->failed);
+               while (g_hash_table_iter_next (&iter, (gpointer *)&key, (gpointer *)&value)) {
+                       gchar *message;
+                       gchar *uri;
 
-               uri = g_file_get_uri (key);
-               message = g_strdup_printf ("%s: %s", uri, value);
+                       uri = g_file_get_uri (key);
+                       message = g_strdup_printf ("%s: %s", uri, value);
 
-               result = g_list_prepend (result, message);
+                       result = g_list_prepend (result, message);
 
-               g_free (uri);
+                       g_free (uri);
+               }
        }
 
        g_rw_lock_reader_unlock (&priv->lock);
@@ -587,7 +592,11 @@ tracker_indexing_status_had_error (TrackerIndexingStatus *status)
 
        g_rw_lock_reader_lock (&priv->lock);
 
-       result = g_hash_table_size (priv->failed) == 0;
+       result = g_task_had_error (priv->task);
+
+       if (result == FALSE) {
+               result = g_hash_table_size (priv->failed) == 0;
+       }
 
        g_rw_lock_reader_unlock (&priv->lock);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]