tracker r1907 - in branches/indexer-split: . src/trackerd



Author: pvanhoof
Date: Tue Jul 22 15:58:30 2008
New Revision: 1907
URL: http://svn.gnome.org/viewvc/tracker?rev=1907&view=rev

Log:
2008-07-22  Philip Van Hoof  <pvanhoof gnome org>

        * src/tracker-indexer/tracker-indexer.c:
        * src/trackerd/tracker-search.c:
        * src/trackerd/tracker-keywords.c:
        * src/trackerd/tracker-metadata.c:
        * src/trackerd/tracker-daemon.c:
        * src/trackerd/tracker-utils.c:

        Wrapped all database access in the DBus implementations with two
        convenient functions.



Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/trackerd/tracker-daemon.c
   branches/indexer-split/src/trackerd/tracker-files.c
   branches/indexer-split/src/trackerd/tracker-indexer.c
   branches/indexer-split/src/trackerd/tracker-indexer.h
   branches/indexer-split/src/trackerd/tracker-keywords.c
   branches/indexer-split/src/trackerd/tracker-metadata.c
   branches/indexer-split/src/trackerd/tracker-search.c
   branches/indexer-split/src/trackerd/tracker-utils.c

Modified: branches/indexer-split/src/trackerd/tracker-daemon.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-daemon.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-daemon.c	Tue Jul 22 15:58:30 2008
@@ -39,6 +39,7 @@
 #include "tracker-main.h"
 #include "tracker-status.h"
 #include "tracker-marshal.h"
+#include "tracker-indexer.h"
 
 #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_DAEMON, TrackerDaemonPriv))
 
@@ -295,6 +296,8 @@
 
 	/* iface = tracker_db_manager_get_db_interfaceX (TRACKER_DB_COMMON); */
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_exec_proc (iface, "GetServices", 0);
@@ -308,6 +311,7 @@
 
 	g_hash_table_destroy (values);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -334,6 +338,8 @@
 
 	/* iface = tracker_db_manager_get_db_interfaceX (TRACKER_DB_COMMON); */
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_exec_proc (iface, "GetStats", 0);
@@ -348,6 +354,7 @@
 	g_ptr_array_foreach (values, (GFunc) g_strfreev, NULL);
 	g_ptr_array_free (values, TRUE);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 

Modified: branches/indexer-split/src/trackerd/tracker-files.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-files.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-files.c	Tue Jul 22 15:58:30 2008
@@ -112,6 +112,7 @@
         tracker_dbus_request_success (request_id);
 }
 
+/* You should deprecate this API */
 void
 tracker_files_create (TrackerFiles           *object,
 		      const gchar            *uri,
@@ -148,6 +149,8 @@
                                   size,
                                   mtime);
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	/* Create structure */
@@ -232,6 +235,8 @@
 
 	dbus_g_method_return (context);
 
+	tracker_indexer_continue ();
+
 	tracker_dbus_request_success (request_id);
 }
 
@@ -265,10 +270,15 @@
 				  "uri:'%s'",
 				  uri);
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	file_id = tracker_db_file_get_id (iface, uri);
+
 	if (file_id == 0) {
+		tracker_indexer_continue ();
+
 		tracker_dbus_request_comment (request_id, 
 					      "File or directory was not in database to delete, uri:'%s'",
 					      uri);
@@ -278,6 +288,8 @@
 		return;
 	}
 
+	tracker_indexer_continue ();
+
 	if (uri[0] == G_DIR_SEPARATOR) {
 		name = g_path_get_basename (uri);
 		path = g_path_get_dirname (uri);
@@ -335,6 +347,8 @@
                                   "uri:'%s'",
                                   uri);
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	/* FIXME why dont obtain the service type directly from the DB??? */
@@ -342,6 +356,8 @@
 	file_id = tracker_db_file_get_id (iface, uri);
 
 	if (file_id < 1) {
+		tracker_indexer_continue ();
+
 		tracker_dbus_request_failed (request_id,
 					     &actual_error, 
 					     "File '%s' was not found in the database",
@@ -364,6 +380,8 @@
 		g_object_unref (result_set);
 	}
 
+	tracker_indexer_continue ();
+
 	g_free (file_id_str);
 
 	if (!mime) {
@@ -435,25 +453,31 @@
                                   offset,
                                   max_length);
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 
 	/* FIXME iface is already for "Files". Makes no sense to try Files and Emails */
 	service_id = tracker_db_file_get_id_as_string (iface, "Files", uri);
 	if (!service_id) {
+
 		service_id = tracker_db_file_get_id_as_string (iface, "Emails", uri);
 
 		if (!service_id) {
+			tracker_indexer_continue ();
 			tracker_dbus_request_failed (request_id,
 						     &actual_error, 
 						     "Unable to retrieve service ID for uri '%s'",
 						     uri);
 			dbus_g_method_return_error (context, actual_error);
 			g_error_free (actual_error);
-			return;		
+			return;
 		} 
 	}
 
+	tracker_indexer_continue ();
+
 	offset_str = tracker_int_to_string (offset);
 	max_length_str = tracker_int_to_string (max_length);
 
@@ -522,6 +546,8 @@
                                   text,
                                   max_length);
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	if (uri[0] == G_DIR_SEPARATOR) {
@@ -563,6 +589,7 @@
                                      __PRETTY_FUNCTION__);
 	dbus_g_method_return_error (context, actual_error);
 	g_error_free (actual_error);
+	tracker_indexer_continue ();
 }
 
 void
@@ -604,6 +631,7 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_files_get_by_service (iface, 
@@ -611,6 +639,8 @@
 						      offset, 
 						      max_hits);
 
+	tracker_indexer_continue ();
+
 	values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
 
 	if (result_set) {
@@ -654,6 +684,7 @@
                                   offset,
                                   max_hits);
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_files_get_by_mime (iface,
@@ -663,6 +694,8 @@
 						   max_hits, 
 						   FALSE);
 
+	tracker_indexer_continue ();
+
 	values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
 
 	if (result_set) {
@@ -706,6 +739,7 @@
                                   offset,
                                   max_hits);
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	/* NOTE: The only difference between this function and the
@@ -718,6 +752,8 @@
 						   max_hits, 
 						   TRUE);
 
+	tracker_indexer_continue ();
+
 	values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
 		
 	if (result_set) {
@@ -755,6 +791,7 @@
                                   "uri:'%s'",
                                   uri);
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	if (uri[0] == G_DIR_SEPARATOR) {
@@ -770,6 +807,8 @@
 					   path, 
 					   name, 
 					   NULL);
+	tracker_indexer_continue ();
+
 	g_free (path);
 	g_free (name);
 
@@ -825,7 +864,6 @@
                                   uri,
                                   g_strv_length (fields));
 
-	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	/* Get fields for metadata list provided */
 	for (i = 0; i < g_strv_length (fields); i++) {
@@ -850,9 +888,13 @@
 		uri_filtered = g_strdup (uri);
 	}
 
+	tracker_indexer_pause ();
+	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+
 	/* Get file ID in database */
 	file_id = tracker_db_file_get_id (iface, uri_filtered);
 	if (file_id == 0) {
+		tracker_indexer_continue ();
 		g_free (uri_filtered);
 		tracker_dbus_request_failed (request_id,
 					     &actual_error, 
@@ -922,6 +964,8 @@
 	result_set = tracker_db_interface_execute_query (iface, NULL, query);
 	values = tracker_dbus_query_result_to_ptr_array (result_set);
 
+	tracker_indexer_continue ();
+
 	if (result_set) {
 		g_object_unref (result_set);
 	}
@@ -959,10 +1003,13 @@
                                   text,
                                   g_strv_length (mime_types));
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_search_text_and_mime (iface, text, mime_types);
 
+	tracker_indexer_continue ();
+
 	if (result_set) {
 		gboolean  valid = TRUE;
 		gchar    *prefix, *name;
@@ -1021,10 +1068,13 @@
                                   text,
                                   uri);
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_search_text_and_location (iface, text, uri);
 
+	tracker_indexer_continue ();
+
 	if (result_set) {
 		gboolean  valid = TRUE;
 		gchar    *prefix, *name;
@@ -1087,10 +1137,13 @@
 				  g_strv_length (mime_types),
                                   uri);
 
+	tracker_indexer_pause ();
 	iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
 
 	result_set = tracker_db_search_text_and_mime_and_location (iface, text, mime_types, uri);
 
+	tracker_indexer_continue ();
+
 	if (result_set) {
 		gboolean  valid = TRUE;
 		gchar    *prefix, *name;

Modified: branches/indexer-split/src/trackerd/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-indexer.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-indexer.c	Tue Jul 22 15:58:30 2008
@@ -36,6 +36,10 @@
 
 #include "tracker-indexer.h"
 #include "tracker-query-tree.h"
+#include "tracker-indexer-client.h"
+#include "tracker-status.h"
+#include "tracker-indexer-client.h"
+#include "tracker-dbus.h"
 
 /* Size of free block pool of inverted index */
 #define MAX_HIT_BUFFER      480000
@@ -660,3 +664,71 @@
 
 	return FALSE;
 }
+
+
+static guint pause_timeout = 0;
+
+static void 
+set_paused_reply (DBusGProxy *proxy, GError *error, gpointer userdata)
+{
+}
+
+static gboolean
+tracker_indexer_pauzed (gpointer user_data)
+{
+	DBusGProxy *proxy = user_data;
+
+	/* Here it doesn't matter, so we don't block like below */
+	org_freedesktop_Tracker_Indexer_set_paused_async (proxy, FALSE, 
+							  set_paused_reply,
+							  NULL);
+
+	return FALSE;
+}
+
+static void
+tracker_indexer_pauze_finished (gpointer user_data)
+{
+	DBusGProxy *proxy = user_data;
+	pause_timeout = 0;
+	g_object_unref (proxy);
+}
+
+void
+tracker_indexer_pause (void)
+{
+	/* If we are not indexing, there's no indexer to pauze ... 
+	 * Q: what if during this pause an indexer gets started? */
+
+	if (tracker_status_get () != TRACKER_STATUS_INDEXING)
+		return;
+
+	/* If another pause is already active */
+	if (pause_timeout == 0) {
+		DBusGProxy *proxy;
+		GError     *error = NULL;
+
+		proxy = tracker_dbus_indexer_get_proxy ();
+
+		/* We want to block until we are sure that we are pauzed */
+		org_freedesktop_Tracker_Indexer_set_paused (proxy, TRUE, &error);
+
+		if (!error) {
+			/* Activate a pause */
+			pause_timeout = g_timeout_add_full (G_PRIORITY_DEFAULT,
+							    10 * 1000 /* 10 seconds */,
+							    tracker_indexer_pauzed,
+							    g_object_ref (proxy),
+							    tracker_indexer_pauze_finished);
+		} else {
+			/* Should we do something useful with error here? */
+			g_error_free (error);
+		}
+	}
+}
+
+void
+tracker_indexer_continue (void)
+{
+	return;
+}

Modified: branches/indexer-split/src/trackerd/tracker-indexer.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-indexer.h	(original)
+++ branches/indexer-split/src/trackerd/tracker-indexer.h	Tue Jul 22 15:58:30 2008
@@ -71,6 +71,8 @@
 									  const gchar               *word,
 									  GSList                    *dud_list);
 
+void                       tracker_indexer_pause                          (void);
+void                       tracker_indexer_continue                       (void);
 
 G_END_DECLS
 

Modified: branches/indexer-split/src/trackerd/tracker-keywords.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-keywords.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-keywords.c	Tue Jul 22 15:58:30 2008
@@ -32,6 +32,7 @@
 #include "tracker-keywords.h"
 #include "tracker-db.h"
 #include "tracker-marshal.h"
+#include "tracker-indexer.h"
 
 #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_KEYWORDS, TrackerKeywordsPriv))
 
@@ -132,7 +133,6 @@
 				  service_type);
 
 	if (!tracker_ontology_is_valid_service_type (service_type)) {
-
 		tracker_dbus_request_failed (request_id,
 					     &actual_error, 
                                              "Service type '%s' is invalid or has not been implemented yet", 
@@ -142,6 +142,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 	result_set = tracker_db_keywords_get_list (iface, service_type);
 	values = tracker_dbus_query_result_to_ptr_array (result_set);
@@ -153,6 +155,7 @@
 	dbus_g_method_return (context, values);
 	tracker_dbus_results_ptr_array_free (&values);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -200,10 +203,12 @@
 		return;
 	}
 
-	
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 	id = tracker_db_file_get_id_as_string (iface, service_type, uri);
 	if (!id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error,
 					     "Entity '%s' was not found", 
@@ -230,6 +235,7 @@
 		g_strfreev (values);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -278,9 +284,12 @@
 		return;
         }
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 	id = tracker_db_file_get_id_as_string (iface, service_type, uri);
 	if (!id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error,
 					     "Entity '%s' was not found", 
@@ -305,6 +314,7 @@
 
 	dbus_g_method_return (context);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -353,9 +363,12 @@
 		return;
         }
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 	id = tracker_db_file_get_id_as_string (iface, service_type, uri);
 	if (!id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error,
 					     "Entity '%s' was not found", 
@@ -376,6 +389,7 @@
 
 	dbus_g_method_return (context);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -421,9 +435,12 @@
 		return;
         }
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 	id = tracker_db_file_get_id_as_string (iface, service_type, uri);
 	if (!id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error,
 					     "Entity '%s' was not found", 
@@ -442,6 +459,7 @@
 
 	dbus_g_method_return (context);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -492,6 +510,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 
 	/* Sanity check values */
@@ -561,5 +581,6 @@
 		g_strfreev (values);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }

Modified: branches/indexer-split/src/trackerd/tracker-metadata.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-metadata.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-metadata.c	Tue Jul 22 15:58:30 2008
@@ -36,6 +36,7 @@
 #include "tracker-metadata.h"
 #include "tracker-db.h"
 #include "tracker-marshal.h"
+#include "tracker-indexer.h"
 
 G_DEFINE_TYPE(TrackerMetadata, tracker_metadata, G_TYPE_OBJECT)
 
@@ -100,10 +101,13 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 
 	service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
         if (!service_id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error,
 					     "Service URI '%s' not found", 
@@ -118,6 +122,7 @@
 	 */
 	service_result = tracker_db_service_get_by_entity (iface, service_id);
 	if (!service_result) {
+		tracker_indexer_continue ();
 		g_free (service_id);
 		tracker_dbus_request_failed (request_id,
 					     &actual_error, 
@@ -209,6 +214,7 @@
 	dbus_g_method_return (context, values);
 	g_strfreev (values);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 }
 
@@ -251,10 +257,13 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service_type);
 
 	service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
         if (!service_id) {
+		tracker_indexer_continue ();
 		tracker_dbus_request_failed (request_id,
 					     &actual_error, 
 					     "Service URI '%s' not found", 
@@ -273,7 +282,7 @@
 
 		if (!key || strlen (key) < 3 || strchr (key, ':') == NULL) {
 			g_free (service_id);
-
+			tracker_indexer_continue ();
 			tracker_dbus_request_failed (request_id,
 						     &actual_error, 
 						     "Metadata type name '%s' is invalid, all names must be registered", 
@@ -297,6 +306,7 @@
 
 	dbus_g_method_return (context);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 }
@@ -396,7 +406,6 @@
 	}
 
 	tracker_dbus_request_success (request_id);
-	
 }
 
 void
@@ -407,7 +416,7 @@
 	guint                request_id;
 	gchar              **values = NULL;
 	GSList              *registered = NULL;
-						 
+
 	request_id = tracker_dbus_get_next_request_id ();
 
 	tracker_dbus_request_new (request_id,

Modified: branches/indexer-split/src/trackerd/tracker-search.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-search.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-search.c	Tue Jul 22 15:58:30 2008
@@ -663,6 +663,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	result_set = tracker_db_search_text (iface, 
@@ -712,6 +714,7 @@
 
 	g_strfreev (strv);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -769,6 +772,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	result_set = tracker_db_search_text (iface, 
@@ -789,6 +794,7 @@
 		g_object_unref (result_set);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -843,10 +849,13 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	service_id = tracker_db_file_get_id_as_string (iface, service, id);
 	if (!service_id) {
+		tracker_indexer_continue ();
 		g_set_error (&actual_error,
 			     TRACKER_DBUS_ERROR,
 			     0,
@@ -857,8 +866,6 @@
 		return;
 	}
 
-	iface = tracker_db_manager_get_db_interface_by_service (service);
-
 	result_set = tracker_db_exec_proc (iface, 
 					   "GetAllContents", 
 					   service_id, 
@@ -896,6 +903,7 @@
 
 	g_free (snippet);
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -1004,6 +1012,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	/* FIXME: This function no longer exists, it was returning
@@ -1029,6 +1039,7 @@
 		g_object_unref (result_set);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -1082,6 +1093,8 @@
 		return;
 	}
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	/* FIXME: This function no longer exists, it was returning
@@ -1105,6 +1118,7 @@
 		g_object_unref (result_set);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -1165,6 +1179,8 @@
 
 	result_set = NULL;
 
+	tracker_indexer_pause ();
+
 	iface = tracker_db_manager_get_db_interface_by_service (service);
 
 	if (query_condition) {
@@ -1191,6 +1207,7 @@
 							     query_error);
 
 		if (query_error) {
+			tracker_indexer_continue ();
 			g_set_error (&actual_error,
 				     TRACKER_DBUS_ERROR,
 				     0,
@@ -1200,6 +1217,7 @@
 			g_error_free (query_error);
 			return;
 		} else if (!query_translated) {
+			tracker_indexer_continue ();
 			g_set_error (&actual_error,
 				     TRACKER_DBUS_ERROR,
 				     0,
@@ -1239,6 +1257,7 @@
 		g_object_unref (result_set);
 	}
 
+	tracker_indexer_continue ();
 	tracker_dbus_request_success (request_id);
 
 	return;
@@ -1287,5 +1306,7 @@
 		g_free (value);
 	}
 
+	tracker_dbus_request_success (request_id);
+
 	return;
 }

Modified: branches/indexer-split/src/trackerd/tracker-utils.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-utils.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-utils.c	Tue Jul 22 15:58:30 2008
@@ -56,3 +56,4 @@
 	g_hash_table_steal (meta_table, key);
 	g_hash_table_insert (meta_table, (gchar*) key, list);
 }
+



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