tracker r1724 - in branches/xesam-support: . src/libtracker-db src/trackerd
- From: pvanhoof svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1724 - in branches/xesam-support: . src/libtracker-db src/trackerd
- Date: Fri, 20 Jun 2008 13:24:44 +0000 (UTC)
Author: pvanhoof
Date: Fri Jun 20 13:24:44 2008
New Revision: 1724
URL: http://svn.gnome.org/viewvc/tracker?rev=1724&view=rev
Log:
Sync with indexer-split
Modified:
branches/xesam-support/ChangeLog
branches/xesam-support/src/libtracker-db/tracker-db-manager.c
branches/xesam-support/src/trackerd/tracker-main.c
branches/xesam-support/src/trackerd/tracker-xesam-manager.c
branches/xesam-support/src/trackerd/tracker-xesam.c
Modified: branches/xesam-support/src/libtracker-db/tracker-db-manager.c
==============================================================================
--- branches/xesam-support/src/libtracker-db/tracker-db-manager.c (original)
+++ branches/xesam-support/src/libtracker-db/tracker-db-manager.c Fri Jun 20 13:24:44 2008
@@ -140,7 +140,7 @@
static gchar *user_data_dir;
static gchar *sys_tmp_dir;
static gpointer db_type_enum_class_pointer;
-static TrackerDBInterface *attach_interface = NULL;
+static TrackerDBInterface *attach_iface = NULL;
static const gchar *
location_to_directory (TrackerDBLocation location)
@@ -1658,26 +1658,33 @@
db_type_to_string (type));
if (attach_all) {
- if (!attach_interface) {
- attach_interface = tracker_db_interface_sqlite_new (path);
- tracker_db_interface_set_procedure_table (attach_interface,
- prepared_queries);
-
- /* We don't have separate interfaces for each db in
- * this situation. We just have one interface.
- * One analyze when we create interfaces.
- */
+ iface = tracker_db_interface_sqlite_new (path);
+ tracker_db_interface_set_procedure_table (iface,
+ prepared_queries);
+
+ /* We don't have separate interfaces for each db in
+ * this situation. We just have one interface.
+ * One analyze when we create interfaces.
+ */
+ if (*create) {
g_message (" Analyzing...");
- db_exec_no_reply (attach_interface, "ANALYZE");
+ db_exec_no_reply (iface, "ANALYZE");
}
- g_message (" Attaching");
- db_exec_no_reply (attach_interface,
- "ATTACH '%s' as %s",
- dbs[type].abs_filename,
- dbs[type].name);
-
- iface = attach_interface;
+ /* The reason we do this is because we need to create
+ * a new interface for EACH filename so the sql files
+ * are loaded into the right file instead of the
+ * first one we create.
+ */
+ if (attach_iface) {
+ g_message (" Attaching");
+ db_exec_no_reply (attach_iface,
+ "ATTACH '%s' as %s",
+ dbs[type].abs_filename,
+ dbs[type].name);
+ } else {
+ attach_iface = iface;
+ }
} else {
iface = tracker_db_interface_sqlite_new (path);
tracker_db_interface_set_procedure_table (iface,
@@ -2020,22 +2027,31 @@
iface = db_interface_get (TRACKER_DB_XESAM, &create);
+ if (!attach_iface) {
+ g_critical ("XESAM database could not be set up because "
+ "there is no TrackerDBInterface with all connections "
+ "attached. The common database is needed to create "
+ "the xesam database correctly!");
+ g_object_unref (iface);
+ return NULL;
+ }
+
if (create) {
- load_sql_file (iface, "sqlite-xesam.sql", NULL);
+ load_sql_file (attach_iface, "sqlite-xesam.sql", NULL);
- load_service_file_xesam (iface, "xesam.metadata");
- load_service_file_xesam (iface, "xesam-convenience.metadata");
- load_service_file_xesam (iface, "xesam-virtual.metadata");
- load_service_file_xesam (iface, "xesam.service");
- load_service_file_xesam (iface, "xesam-convenience.service");
- load_service_file_xesam (iface, "xesam-service.smapping");
- load_service_file_xesam (iface, "xesam-metadata.mmapping");
+ load_service_file_xesam (attach_iface, "xesam.metadata");
+ load_service_file_xesam (attach_iface, "xesam-convenience.metadata");
+ load_service_file_xesam (attach_iface, "xesam-virtual.metadata");
+ load_service_file_xesam (attach_iface, "xesam.service");
+ load_service_file_xesam (attach_iface, "xesam-convenience.service");
+ load_service_file_xesam (attach_iface, "xesam-service.smapping");
+ load_service_file_xesam (attach_iface, "xesam-metadata.mmapping");
- db_xesam_create_lookup (iface);
+ db_xesam_create_lookup (attach_iface);
}
/* Load static xesam data */
- db_get_static_xesam_data (iface);
+ db_get_static_xesam_data (attach_iface);
return iface;
}
@@ -2227,7 +2243,7 @@
}
/* Don't attach while we do this... */
- attach_all = FALSE;
+ attach_all = TRUE;
/* In cases where we re-init this module, make sure
* we have cleaned up the ontology before we load all
@@ -2242,23 +2258,19 @@
g_message ("Creating database files, this may take a few moments...");
for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
- TrackerDBInterface *iface;
-
- iface = db_interface_create (i);
-
- if (!attach_all) {
- dbs[i].iface = iface;
- }
+ dbs[i].iface = db_interface_create (i);
}
- /* When attaching all, we have 2 references per
- * interface, one for the dbs and one for the
- * singletone interface, we need to unref both and
- * set the attach interface to NULL to close all
- * databases.
+ /* We don't close the dbs in the same loop as before
+ * becase some databases need other databases
+ * attached to be created correctly.
*/
- g_object_unref (attach_interface);
- attach_interface = NULL;
+ for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
+ g_object_unref (dbs[i].iface);
+ dbs[i].iface = NULL;
+ }
+
+ attach_iface = NULL;
} else {
/* Make sure we remove and recreate the cache directory in tmp
* each time we start up, this is meant to be a per-run
@@ -2278,13 +2290,7 @@
g_message ("Loading databases files...");
for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
- TrackerDBInterface *iface;
-
- iface = db_interface_create (i);
-
- if (!attach_all) {
- dbs[i].iface = iface;
- }
+ dbs[i].iface = db_interface_create (i);
}
initialized = TRUE;
@@ -2336,9 +2342,7 @@
g_type_class_unref (db_type_enum_class_pointer);
db_type_enum_class_pointer = NULL;
- if (attach_interface) {
- g_object_unref (attach_interface);
- }
+ attach_iface = NULL;
/* Make sure we shutdown all other modules we depend on */
tracker_ontology_shutdown ();
@@ -2360,7 +2364,7 @@
g_return_val_if_fail (initialized != FALSE, NULL);
if (attach_all) {
- return attach_interface;
+ return attach_iface;
}
return dbs[db].iface;
Modified: branches/xesam-support/src/trackerd/tracker-main.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-main.c (original)
+++ branches/xesam-support/src/trackerd/tracker-main.c Fri Jun 20 13:24:44 2008
@@ -463,11 +463,6 @@
g_message ("Checking directory exists:'%s'", data_dir);
g_mkdir_with_parents (data_dir, 00755);
- /* Remove an existing one */
- if (g_file_test (sys_tmp_dir, G_FILE_TEST_EXISTS)) {
- tracker_path_remove (sys_tmp_dir);
- }
-
/* Remove old tracker dirs */
filename = g_build_filename (g_get_home_dir (), ".Tracker", NULL);
@@ -648,11 +643,6 @@
tracker_path_remove (data_dir);
g_mkdir_with_parents (data_dir, 00755);
}
-
- /* Remove sys tmp directory */
- if (sys_tmp_dir) {
- tracker_path_remove (sys_tmp_dir);
- }
}
static gboolean
Modified: branches/xesam-support/src/trackerd/tracker-xesam-manager.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-manager.c (original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-manager.c Fri Jun 20 13:24:44 2008
@@ -138,8 +138,9 @@
g_strdup (tracker_xesam_session_get_id (session)),
g_object_ref (session));
- if (session_id)
+ if (session_id) {
*session_id = g_strdup (tracker_xesam_session_get_id (session));
+ }
return session;
}
@@ -149,13 +150,15 @@
GError **error)
{
gpointer inst = g_hash_table_lookup (xesam_sessions, session_id);
- if (!inst)
+
+ if (!inst) {
g_set_error (error,
TRACKER_XESAM_ERROR_DOMAIN,
TRACKER_XESAM_ERROR_SESSION_ID_NOT_REGISTERED,
"Session ID is not registered");
- else
+ } else {
g_hash_table_remove (xesam_sessions, session_id);
+ }
}
TrackerXesamSession *
@@ -163,13 +166,16 @@
GError **error)
{
TrackerXesamSession *session = g_hash_table_lookup (xesam_sessions, session_id);
- if (session)
+
+ if (session) {
g_object_ref (session);
- else
+ } else {
g_set_error (error,
TRACKER_XESAM_ERROR_DOMAIN,
TRACKER_XESAM_ERROR_SESSION_ID_NOT_REGISTERED,
"Session ID is not registered");
+ }
+
return session;
}
@@ -187,6 +193,7 @@
TrackerXesamLiveSearch *search;
search = tracker_xesam_session_get_search (sessions->data, search_id, NULL);
+
if (search) {
/* Search got a reference added already */
if (search_in) {
@@ -204,11 +211,13 @@
g_list_free (sessions);
- if (!session)
+ if (!session) {
g_set_error (error,
TRACKER_XESAM_ERROR_DOMAIN,
TRACKER_XESAM_ERROR_SEARCH_ID_NOT_REGISTERED,
"Search ID is not registered");
+ }
+
return session;
}
@@ -223,8 +232,9 @@
while (sessions) {
TrackerXesamLiveSearch *p;
-
+
p = tracker_xesam_session_get_search (sessions->data, search_id, NULL);
+
if (p) {
/* Search got a reference added already */
search = p;
@@ -236,11 +246,12 @@
g_list_free (sessions);
- if (!search)
+ if (!search) {
g_set_error (error,
TRACKER_XESAM_ERROR_DOMAIN,
TRACKER_XESAM_ERROR_SEARCH_ID_NOT_REGISTERED,
"Search ID is not registered");
+ }
return search;
}
Modified: branches/xesam-support/src/trackerd/tracker-xesam.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam.c (original)
+++ branches/xesam-support/src/trackerd/tracker-xesam.c Fri Jun 20 13:24:44 2008
@@ -409,15 +409,15 @@
if (error) {
dbus_g_method_return_error (context, error);
g_error_free (error);
- } else
+ } else {
+ g_debug ("Created new xesam search: %s for session: %s",
+ search_id, session_id);
dbus_g_method_return (context, search_id);
+ }
if (search)
g_object_unref (search);
- g_debug ("Created new xesam search: %s for session: %s",
- search_id, session_id);
-
g_free (search_id);
} else if (error) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]