tracker r2688 - branches/turtle/src/trackerd



Author: ifrade
Date: Wed Dec 10 15:01:12 2008
New Revision: 2688
URL: http://svn.gnome.org/viewvc/tracker?rev=2688&view=rev

Log:
Backup metadata when tracker is shutdown_with_reindex

Modified:
   branches/turtle/src/trackerd/tracker-main.c

Modified: branches/turtle/src/trackerd/tracker-main.c
==============================================================================
--- branches/turtle/src/trackerd/tracker-main.c	(original)
+++ branches/turtle/src/trackerd/tracker-main.c	Wed Dec 10 15:01:12 2008
@@ -608,6 +608,14 @@
 static void
 shutdown_databases (void)
 {
+	TrackerMainPrivate *private;
+
+	private = g_static_private_get (&private_key);
+
+	/* If we are reindexing, save the user metadata  */
+	if (private->reindex_on_shutdown) {
+		tracker_backup_save (private->ttl_backup_file);
+	}
 	/* Reset integrity status as threads have closed cleanly */
 	tracker_data_manager_set_db_option_int ("IntegrityCheck", 0);
 }
@@ -755,7 +763,8 @@
 }
 
 static const gchar *
-get_ttl_backup_filename (void) {
+get_ttl_backup_filename (void) 
+{
 
 	TrackerMainPrivate *private;
 
@@ -768,6 +777,8 @@
 /*
  * TODO: Ugly hack counting signals because the indexer is sending two "Finished" signals
  *  and only the second really mean "finished processing modules".
+ *
+ * Saving the last backup file to help with debugging.
  */
 static void
 crawling_finished_cb (TrackerProcessor *processor, gpointer user_data)
@@ -779,12 +790,18 @@
 	counter += 1;
 
 	if (counter >= 2) {
+		gchar *rebackup;
+
 		g_debug ("Uninstalling initial crawling callback");
 		g_signal_handler_disconnect (processor, *callback_id);
 
 		org_freedesktop_Tracker_Indexer_restore_backup (tracker_dbus_indexer_get_proxy (), 
 								get_ttl_backup_filename (),
 								&error);
+		rebackup = g_strdup_printf ("%s.old",
+					    get_ttl_backup_filename ());
+		g_rename (get_ttl_backup_filename (), rebackup);
+		g_free (rebackup);
 	} else {
 		g_debug ("%d finished signal", counter);
 	}
@@ -1103,7 +1120,8 @@
 		tracker_status_set_and_signal (TRACKER_STATUS_IDLE);
 	}
 
-	if (flags & TRACKER_DB_MANAGER_FORCE_REINDEX) {
+	if (flags & TRACKER_DB_MANAGER_FORCE_REINDEX
+	    || g_file_test (get_ttl_backup_filename, G_FILE_TEST_EXISTS)) {
 		g_debug ("Setting callback for crawling finish detection");
 		restore_cb_id = g_signal_connect (private->processor, "finished", 
 						  G_CALLBACK (crawling_finished_cb), 



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