tracker r1902 - in branches/indexer-split: . src/tracker-indexer



Author: carlosg
Date: Tue Jul 22 11:58:31 2008
New Revision: 1902
URL: http://svn.gnome.org/viewvc/tracker?rev=1902&view=rev

Log:
2008-07-22  Carlos Garnacho  <carlos imendio com>

        Improve data flushing to DBs/Indexes, based on a patch by Ivan Frade

        * src/tracker-indexer/tracker-index.c (tracker_index_free): Just flush
        if there are remaining items before the index is destroyed.
        * src/tracker-indexer/tracker-indexer.c (schedule_flush_cb): Renamed
        to flush_data(). Always flush the Index, which is completely unrelated
        to DB transactions.
        (schedule_flush): Call flush_data() if needed immediately
        * src/tracker-indexer/tracker-main.c (indexer_finished_cb): Attach the
        extra refcount to indexer to the timeout. So it's unreferenced when
        the timeout source is removed.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/tracker-indexer/tracker-index.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer.c
   branches/indexer-split/src/tracker-indexer/tracker-main.c

Modified: branches/indexer-split/src/tracker-indexer/tracker-index.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-index.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-index.c	Tue Jul 22 11:58:31 2008
@@ -115,6 +115,12 @@
 {
 	g_hash_table_destroy (index->cache);
 
+	if (g_hash_table_size (index->cache) > 0) {
+		tracker_index_flush (index);
+	}
+
+	g_debug ("Closing index");
+
 	if (!dpclose (index->index)) {
 		g_warning ("Could not close index: %s", dperrmsg (dpecode));
 	}

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c	Tue Jul 22 11:58:31 2008
@@ -250,25 +250,16 @@
 }
 
 static gboolean
-schedule_flush_cb (gpointer data)
+flush_data (TrackerIndexer *indexer)
 {
-	TrackerIndexer *indexer;
-
-	indexer = TRACKER_INDEXER (data);
-
 	indexer->private->flush_id = 0;
 
-	/* If we have transactions, we don't need to flush, we
-	 * just need to end the transactions on each
-	 * interface. This performs a commit for us. 
-	 */
 	if (indexer->private->in_transaction) {
 		stop_transaction (indexer);
-	} else {
-		indexer->private->items_indexed += tracker_index_flush (indexer->private->index);
 	}
 
-	signal_status (indexer, "timed flush");
+	indexer->private->items_indexed += tracker_index_flush (indexer->private->index);
+	signal_status (indexer, "flush");
 
 	return FALSE;
 }
@@ -284,18 +275,7 @@
 			indexer->private->flush_id = 0;
 		}
 
-		/* If we have transactions, we don't need to flush, we
-		 * just need to end the transactions on each
-		 * interface. This performs a commit for us. 
-		 */
-		if (indexer->private->in_transaction) {
-			stop_transaction (indexer);
-		} else {
-			indexer->private->items_indexed += tracker_index_flush (indexer->private->index);
-		}
-
-		signal_status (indexer, "immediate flush");
-
+		flush_data (indexer);
 		return;
 	}
 
@@ -304,8 +284,8 @@
 		return;
 	}
 
-	indexer->private->flush_id = g_timeout_add_seconds (FLUSH_FREQUENCY, 
-							    schedule_flush_cb, 
+	indexer->private->flush_id = g_timeout_add_seconds (FLUSH_FREQUENCY,
+							    (GSourceFunc) flush_data,
 							    indexer);
 }
 
@@ -396,8 +376,6 @@
 	g_object_unref (priv->language);
 	g_object_unref (priv->config);
 
-	/* Do we destroy interfaces? I can't remember */
-
 	tracker_index_free (priv->index);
 
 	g_free (priv->db_dir);

Modified: branches/indexer-split/src/tracker-indexer/tracker-main.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-main.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-main.c	Tue Jul 22 11:58:31 2008
@@ -196,8 +196,6 @@
                 g_message ("Indexer is now running, staying alive until finished...");
         }
 
-        g_object_unref (indexer);
-
         return FALSE;
 }
 
@@ -218,9 +216,11 @@
         g_message ("Nothing was indexed, waiting %d seconds before quitting...",
                    QUIT_TIMEOUT);
 
-        quit_timeout_id = g_timeout_add_seconds (QUIT_TIMEOUT,
-                                                 quit_timeout_cb,
-                                                 g_object_ref (indexer));
+        quit_timeout_id = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
+                                                      QUIT_TIMEOUT,
+                                                      quit_timeout_cb,
+                                                      g_object_ref (indexer),
+                                                      (GDestroyNotify) g_object_unref);
 }
 
 gint



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