tracker r1176 - trunk/src/trackerd
- From: jamiemcc svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1176 - trunk/src/trackerd
- Date: Thu, 28 Feb 2008 23:46:10 +0000 (GMT)
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]