[tracker-miners/sam/index-file-sync: 314/316] miners/fs: Clear the queue on shutdown, don't just free the data



commit d1bc121960dd00127d19c6bc20d5e9d73882c8ee
Author: Sam Thursfield <sam afuera me uk>
Date:   Mon Apr 27 21:02:20 2020 +0200

    miners/fs: Clear the queue on shutdown, don't just free the data
    
    We don't want to maintain a list of invalid pointers. This was
    harmless, until I added some code to remove temporarily indexed
    data on miner-fs shutdown.

 src/libtracker-miner/tracker-miner-fs.c            |  5 ++--
 src/libtracker-miner/tracker-priority-queue.c      | 10 +++----
 src/libtracker-miner/tracker-priority-queue.h      |  5 ++--
 .../libtracker-miner/tracker-priority-queue-test.c | 34 ----------------------
 4 files changed, 9 insertions(+), 45 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index c571a6447..fdedda9c9 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -2549,7 +2549,6 @@ tracker_miner_fs_cancel_all_tasks (TrackerMinerFS *fs)
                                   task_pool_cancel_foreach,
                                   NULL);
 
-       tracker_priority_queue_foreach (priv->items,
-                                      (GFunc) queue_event_free,
-                                      NULL);
+       tracker_priority_queue_clear (priv->items,
+                                     (GFunc) queue_event_free);
 }
diff --git a/src/libtracker-miner/tracker-priority-queue.c b/src/libtracker-miner/tracker-priority-queue.c
index 49e474936..25226f1c7 100644
--- a/src/libtracker-miner/tracker-priority-queue.c
+++ b/src/libtracker-miner/tracker-priority-queue.c
@@ -177,14 +177,14 @@ insert_node (TrackerPriorityQueue *queue,
 }
 
 void
-tracker_priority_queue_foreach (TrackerPriorityQueue *queue,
-                                GFunc                 func,
-                                gpointer              user_data)
+tracker_priority_queue_clear (TrackerPriorityQueue *queue,
+                              GDestroyNotify        free_func)
 {
        g_return_if_fail (queue != NULL);
-       g_return_if_fail (func != NULL);
+       g_return_if_fail (free_func != NULL);
+
+       g_queue_clear_full (&queue->queue, free_func);
 
-       g_queue_foreach (&queue->queue, func, user_data);
 }
 
 gboolean
diff --git a/src/libtracker-miner/tracker-priority-queue.h b/src/libtracker-miner/tracker-priority-queue.h
index 0dbc9b83d..2cb1c6617 100644
--- a/src/libtracker-miner/tracker-priority-queue.h
+++ b/src/libtracker-miner/tracker-priority-queue.h
@@ -40,9 +40,8 @@ guint    tracker_priority_queue_get_length         (TrackerPriorityQueue *queue)
 GList *  tracker_priority_queue_add     (TrackerPriorityQueue *queue,
                                          gpointer              data,
                                          gint                  priority);
-void     tracker_priority_queue_foreach (TrackerPriorityQueue *queue,
-                                         GFunc                 func,
-                                         gpointer              user_data);
+void     tracker_priority_queue_clear   (TrackerPriorityQueue *queue,
+                                         GDestroyNotify        free_func);
 
 gboolean tracker_priority_queue_foreach_remove (TrackerPriorityQueue *queue,
                                                 GEqualFunc            compare_func,
diff --git a/tests/libtracker-miner/tracker-priority-queue-test.c 
b/tests/libtracker-miner/tracker-priority-queue-test.c
index 893ca14f9..d9d993e46 100644
--- a/tests/libtracker-miner/tracker-priority-queue-test.c
+++ b/tests/libtracker-miner/tracker-priority-queue-test.c
@@ -138,38 +138,6 @@ test_priority_queue_find (void)
         tracker_priority_queue_unref (queue);
 }
 
-static void
-foreach_testing_cb (G_GNUC_UNUSED gpointer data,
-                                  gpointer user_data)
-{
-        gint *counter = (gint *)user_data;
-        (*counter) += 1;
-}
-
-static void
-test_priority_queue_foreach (void)
-{
-        TrackerPriorityQueue *queue;
-        gint                  counter = 0;
-
-        queue = tracker_priority_queue_new ();
-        
-        tracker_priority_queue_add (queue, g_strdup ("x"), 10);
-        tracker_priority_queue_add (queue, g_strdup ("x"), 20);        
-        tracker_priority_queue_add (queue, g_strdup ("x"), 30);
-
-        tracker_priority_queue_foreach (queue, foreach_testing_cb, &counter);
-
-        g_assert_cmpint (counter, ==, 3);
-
-        while (!tracker_priority_queue_is_empty (queue)) {
-            gchar *text = (gchar *) tracker_priority_queue_pop (queue, NULL);
-            g_free (text);
-        }
-
-        tracker_priority_queue_unref (queue);
-}
-
 static void
 test_priority_queue_foreach_remove (void)
 {
@@ -250,8 +218,6 @@ main (int    argc,
                         test_priority_queue_peek);
        g_test_add_func ("/libtracker-miner/tracker-priority-queue/find",
                         test_priority_queue_find);
-       g_test_add_func ("/libtracker-miner/tracker-priority-queue/foreach",
-                        test_priority_queue_foreach);
        g_test_add_func ("/libtracker-miner/tracker-priority-queue/foreach_remove",
                         test_priority_queue_foreach_remove);
 


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