tracker r1176 - trunk/src/trackerd



Author: jamiemcc
Date: Thu Feb 28 23:46:10 2008
New Revision: 1176
URL: http://svn.gnome.org/viewvc/tracker?rev=1176&view=rev

Log:
fixed shutdown of trackerd when it is paused during merges

Modified:
   trunk/src/trackerd/tracker-cache.c
   trunk/src/trackerd/tracker-email-evolution.c
   trunk/src/trackerd/tracker-indexer.c
   trunk/src/trackerd/trackerd.c

Modified: trunk/src/trackerd/tracker-cache.c
==============================================================================
--- trunk/src/trackerd/tracker-cache.c	(original)
+++ trunk/src/trackerd/tracker-cache.c	Thu Feb 28 23:46:10 2008
@@ -307,6 +307,11 @@
 
 		gboolean sleep = FALSE;
 
+
+		if (tracker->shutdown) {
+			return FALSE;
+		}
+
 		if (!tracker->is_running || !tracker->enable_indexing) {
 			if (check_flush) tracker_cache_flush_all ();
 			sleep = TRUE;
@@ -325,15 +330,21 @@
 			if (db_con) tracker_db_end_index_transaction (db_con);	
 
 			tracker_dbus_send_index_status_change_signal ();
+			
+			
+			if (tracker_pause ()) {
+				g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex);
+			} else {
 
-			/* set mutex to indicate we are in "check" state to prevent race conditions from other threads resetting gloabl vars */
-			g_mutex_lock (tracker->files_check_mutex);		
+				/* set mutex to indicate we are in "check" state to prevent race conditions from other threads resetting gloabl vars */
+				g_mutex_lock (tracker->files_check_mutex);		
 
-			if ((tracker_pause () || !tracker->is_running || !tracker->enable_indexing) && (!tracker->shutdown))  {
-				g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex);
-			}
+				if ((!tracker->is_running || !tracker->enable_indexing) && (!tracker->shutdown))  {
+					g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex);
+				}
 
-			g_mutex_unlock (tracker->files_check_mutex);
+				g_mutex_unlock (tracker->files_check_mutex);
+			}
 
 			/* determine if wake up call is a shutdown signal */
 			if (tracker->shutdown) {

Modified: trunk/src/trackerd/tracker-email-evolution.c
==============================================================================
--- trunk/src/trackerd/tracker-email-evolution.c	(original)
+++ trunk/src/trackerd/tracker-email-evolution.c	Thu Feb 28 23:46:10 2008
@@ -1395,6 +1395,9 @@
 				email_free_mail_message (mail_msg);
 
 				if (!tracker_cache_process_events (db_con->data, TRUE)) {
+					tracker->status = STATUS_SHUTDOWN;
+					tracker->shutdown = TRUE;
+					tracker_dbus_send_index_status_change_signal ();
 					return;
 				}
 

Modified: trunk/src/trackerd/tracker-indexer.c
==============================================================================
--- trunk/src/trackerd/tracker-indexer.c	(original)
+++ trunk/src/trackerd/tracker-indexer.c	Thu Feb 28 23:46:10 2008
@@ -562,6 +562,8 @@
 	gint       i = 0, index_count, interval = 5000;
 	gboolean   final_exists;
 
+	if (tracker->shutdown) return;
+
 	if (type == INDEX_TYPE_FILES) {
 
 		g_return_if_fail (tracker->file_index);
@@ -688,6 +690,8 @@
 
 				if (i > 101 && (i % 100 == 0)) {
 					if (!tracker_cache_process_events (NULL, FALSE)) {
+						tracker->status = STATUS_SHUTDOWN;
+						tracker_dbus_send_index_status_change_signal ();
 						return;	
 					}
 				}

Modified: trunk/src/trackerd/trackerd.c
==============================================================================
--- trunk/src/trackerd/trackerd.c	(original)
+++ trunk/src/trackerd/trackerd.c	Thu Feb 28 23:46:10 2008
@@ -380,8 +380,6 @@
 {
 	tracker->status = STATUS_SHUTDOWN;
 
-	tracker_log ("shutdown mode entered");
-
 	if (tracker->log_file && sig_msg) {
 		tracker_log ("Received signal '%s' so now shutting down", sig_msg);
 
@@ -400,7 +398,7 @@
 
 	tracker->in_flush = TRUE;
 
-	set_update_count (main_thread_db_con, tracker->update_count);
+	//set_update_count (main_thread_db_con, tracker->update_count);
 
 	/* wait for files thread to sleep */
 	while (!g_mutex_trylock (tracker->files_signal_mutex)) {
@@ -421,8 +419,9 @@
 
 	/* send signals to each thread to wake them up and then stop them */
 
+	
 	tracker->shutdown = TRUE;
-
+	
 	g_mutex_lock (tracker->request_signal_mutex);
 	g_cond_signal (tracker->request_thread_signal);
 	g_mutex_unlock (tracker->request_signal_mutex);
@@ -1065,6 +1064,7 @@
 			tracker->status = STATUS_INDEXING;
 			tracker_dbus_send_index_status_change_signal ();
 		}
+		
 				
 		info = g_async_queue_try_pop (tracker->file_process_queue);
 
@@ -1326,7 +1326,11 @@
 
 								tracker_db_end_index_transaction (db_con);
 								tracker_cache_flush_all ();
+								
 								tracker_indexer_merge_indexes (INDEX_TYPE_FILES);
+								
+								if (tracker->shutdown) break;
+								
 								tracker->index_status = INDEX_EMAILS;
 
 								tracker_dbus_send_index_progress_signal ("Emails", "");
@@ -1403,6 +1407,9 @@
 				tracker_db_refresh_all (db_con);
 
 				tracker_indexer_merge_indexes (INDEX_TYPE_FILES);
+				
+				if (tracker->shutdown) break;
+								
 
 				if (tracker->word_update_count > 0) {
 					tracker_indexer_apply_changes (tracker->file_index, tracker->file_update_index, TRUE);
@@ -1410,6 +1417,8 @@
 
 				tracker_indexer_merge_indexes (INDEX_TYPE_EMAILS);
 
+				if (tracker->shutdown) break;
+
 				tracker->index_status = INDEX_FILES;
 				tracker_dbus_send_index_progress_signal ("Files","");
 				tracker->index_status = INDEX_FINISHED;



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