tracker r1902 - in branches/indexer-split: . src/tracker-indexer
- From: carlosg svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1902 - in branches/indexer-split: . src/tracker-indexer
- Date: Tue, 22 Jul 2008 11:58:32 +0000 (UTC)
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]