[tracker/functions] libtracker-common: Added D-Bus client lookup for logging
- From: Mikael Ottela <mottela src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/functions] libtracker-common: Added D-Bus client lookup for logging
- Date: Thu, 14 Jan 2010 09:10:58 +0000 (UTC)
commit 8948d62121f65eb4209848c35a9e615b648e174e
Author: Martyn Russell <martyn lanedo com>
Date: Mon Jan 11 18:51:33 2010 +0000
libtracker-common: Added D-Bus client lookup for logging
If verbosity is > 0 for tracker-store, the log will show:
<--- [%d|%s] Hello World
Where %d is the request ID and %s is the basename of the command that
sent the D-Bus request in. For example "tracker-stats".
src/libtracker-common/tracker-dbus.c | 358 ++++++++++++++++++++++++---
src/libtracker-common/tracker-dbus.h | 10 +-
src/libtracker-miner/tracker-miner.c | 38 ++--
src/plugins/kmail/tracker-kmail-registrar.c | 48 ++--
src/tracker-extract/tracker-extract.c | 59 +++--
src/tracker-store/tracker-backup.c | 6 +-
src/tracker-store/tracker-main.c | 24 ++
src/tracker-store/tracker-resources.c | 60 +++--
src/tracker-store/tracker-statistics.c | 4 +-
tests/libtracker-common/tracker-dbus-test.c | 8 +-
10 files changed, 490 insertions(+), 125 deletions(-)
---
diff --git a/src/libtracker-common/tracker-dbus.c b/src/libtracker-common/tracker-dbus.c
index fc642fa..a6925bf 100644
--- a/src/libtracker-common/tracker-dbus.c
+++ b/src/libtracker-common/tracker-dbus.c
@@ -21,17 +21,43 @@
#include <gio/gio.h>
+#include <dbus/dbus-glib-bindings.h>
+
#include "tracker-dbus.h"
#include "tracker-log.h"
+/* How long clients can exist since last D-Bus call before being
+ * cleaned up.
+ */
+#define CLIENT_CLEAN_UP_TIME 300
+
+/* How often we check for stale client cache (in seconds) */
+#define CLIENT_CLEAN_UP_CHECK 60
+
struct TrackerDBusRequestHandler {
TrackerDBusRequestFunc new;
TrackerDBusRequestFunc done;
gpointer user_data;
};
-static GSList *hooks;
-static gboolean block_hooks;
+typedef struct {
+ gchar *sender;
+ gchar *binary;
+ gulong pid;
+ GTimeVal last_time;
+} ClientData;
+
+static GSList *hooks;
+static gboolean block_hooks;
+
+static gboolean client_lookup_enabled;
+static DBusGConnection *freedesktop_connection;
+static DBusGProxy *freedesktop_proxy;
+static GHashTable *clients;
+static guint clients_clean_up_id;
+
+static void client_data_free (gpointer data);
+static gboolean clients_clean_up_cb (gpointer data);
static void
request_handler_call_for_new (guint request_id)
@@ -73,6 +99,226 @@ request_handler_call_for_done (guint request_id)
}
}
+static gboolean
+clients_init (void)
+{
+ GError *error = NULL;
+ DBusGConnection *conn;
+
+ conn = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+ if (!conn) {
+ g_critical ("Could not connect to the D-Bus session bus, %s",
+ error ? error->message : "no error given.");
+ g_error_free (error);
+ return FALSE;
+ }
+
+ freedesktop_connection = dbus_g_connection_ref (conn);
+
+ freedesktop_proxy =
+ dbus_g_proxy_new_for_name (freedesktop_connection,
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS);
+
+ if (!freedesktop_proxy) {
+ g_critical ("Could not create a proxy for the Freedesktop service, %s",
+ error ? error->message : "no error given.");
+ g_error_free (error);
+ return FALSE;
+ }
+
+ clients = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ NULL,
+ client_data_free);
+ clients_clean_up_id =
+ g_timeout_add_seconds (CLIENT_CLEAN_UP_CHECK, clients_clean_up_cb, NULL);
+
+ return TRUE;
+}
+
+static gboolean
+clients_shutdown (void)
+{
+ if (freedesktop_proxy) {
+ g_object_unref (freedesktop_proxy);
+ freedesktop_proxy = NULL;
+ }
+
+ if (freedesktop_connection) {
+ dbus_g_connection_unref (freedesktop_connection);
+ freedesktop_connection = NULL;
+ }
+
+ if (clients_clean_up_id != 0) {
+ g_source_remove (clients_clean_up_id);
+ clients_clean_up_id = 0;
+ }
+
+ if (clients) {
+ g_hash_table_unref (clients);
+ clients = NULL;
+ }
+
+ return TRUE;
+}
+
+static void
+client_data_free (gpointer data)
+{
+ ClientData *cd = data;
+
+ if (!cd) {
+ return;
+ }
+
+ g_free (cd->sender);
+ g_free (cd->binary);
+
+ g_slice_free (ClientData, cd);
+}
+
+static ClientData *
+client_data_new (gchar *sender)
+{
+ ClientData *cd;
+ GError *error = NULL;
+ guint pid;
+ gboolean get_binary = TRUE;
+
+ cd = g_slice_new0 (ClientData);
+ cd->sender = sender;
+
+ if (org_freedesktop_DBus_get_connection_unix_process_id (freedesktop_proxy,
+ sender,
+ &pid,
+ &error)) {
+ cd->pid = pid;
+ }
+
+ if (get_binary) {
+ gchar *filename;
+ gchar *pid_str;
+ gchar *contents = NULL;
+ GError *error = NULL;
+ gchar **strv;
+
+ pid_str = g_strdup_printf ("%ld", cd->pid);
+ filename = g_build_filename (G_DIR_SEPARATOR_S,
+ "proc",
+ pid_str,
+ "cmdline",
+ NULL);
+ g_free (pid_str);
+
+ if (!g_file_get_contents (filename, &contents, NULL, &error)) {
+ g_warning ("Could not get process name from id %ld, %s",
+ cd->pid,
+ error ? error->message : "no error given");
+ g_clear_error (&error);
+ g_free (filename);
+ return FALSE;
+ }
+
+ g_free (filename);
+
+ strv = g_strsplit (contents, "^@", 2);
+ if (strv && strv[0]) {
+ cd->binary = g_path_get_basename (strv[0]);
+ }
+
+ g_strfreev (strv);
+ g_free (contents);
+ }
+
+ return cd;
+}
+
+static gboolean
+clients_clean_up_cb (gpointer data)
+{
+ GTimeVal now;
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_get_current_time (&now);
+
+ g_hash_table_iter_init (&iter, clients);
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ ClientData *cd;
+ glong diff;
+
+ cd = value;
+
+ diff = now.tv_sec - cd->last_time.tv_sec;
+
+ /* 5 Minutes */
+ if (diff >= CLIENT_CLEAN_UP_TIME) {
+ g_debug ("Removing D-Bus client data for '%s' with id:'%s'",
+ cd->binary, cd->sender);
+ g_hash_table_iter_remove (&iter);
+ }
+ }
+
+ if (g_hash_table_size (clients) < 1) {
+ /* This must be before the clients_shutdown which will
+ * attempt to clean up the the timeout too.
+ */
+ clients_clean_up_id = 0;
+
+ /* Clean everything else up. */
+ clients_shutdown ();
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static ClientData *
+client_get_for_context (DBusGMethodInvocation *context)
+{
+ ClientData *cd;
+ gchar *sender;
+
+ if (!client_lookup_enabled) {
+ return NULL;
+ }
+
+ /* Only really done with tracker-extract where we use
+ * functions from the command line with dbus code in them.
+ */
+ if (!context) {
+ return NULL;
+ }
+
+ /* Shame we have to allocate memory in any condition here,
+ * sucky glib D-Bus API is to blame here :/
+ */
+ sender = dbus_g_method_get_sender (context);
+
+ if (G_UNLIKELY (!clients)) {
+ clients_init ();
+
+ cd = client_data_new (sender);
+ g_hash_table_insert (clients, sender, cd);
+ } else {
+ cd = g_hash_table_lookup (clients, sender);
+
+ if (G_UNLIKELY (!cd)) {
+ cd = client_data_new (sender);
+ g_hash_table_insert (clients, sender, cd);
+ } else {
+ g_get_current_time (&cd->last_time);
+ g_free (sender);
+ }
+ }
+
+ return cd;
+}
+
GValue *
tracker_dbus_gvalue_slice_new (GType type)
{
@@ -276,19 +522,25 @@ tracker_dbus_request_remove_hook (TrackerDBusRequestHandler *handler)
}
void
-tracker_dbus_request_new (gint request_id,
- const gchar *format,
+tracker_dbus_request_new (gint request_id,
+ DBusGMethodInvocation *context,
+ const gchar *format,
...)
{
- gchar *str;
- va_list args;
+ ClientData *cd;
+ gchar *str;
+ va_list args;
va_start (args, format);
str = g_strdup_vprintf (format, args);
va_end (args);
- g_debug ("<--- [%d] %s",
+ cd = client_get_for_context (context);
+
+ g_debug ("<--- [%d%s%s] %s",
request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "",
str);
g_free (str);
@@ -297,22 +549,31 @@ tracker_dbus_request_new (gint request_id,
}
void
-tracker_dbus_request_success (gint request_id)
+tracker_dbus_request_success (gint request_id,
+ DBusGMethodInvocation *context)
{
+ ClientData *cd;
+
request_handler_call_for_done (request_id);
- g_debug ("---> [%d] Success, no error given",
- request_id);
+ cd = client_get_for_context (context);
+
+ g_debug ("---> [%d%s%s] Success, no error given",
+ request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "");
}
void
-tracker_dbus_request_failed (gint request_id,
- GError **error,
- const gchar *format,
+tracker_dbus_request_failed (gint request_id,
+ DBusGMethodInvocation *context,
+ GError **error,
+ const gchar *format,
...)
{
- gchar *str;
- va_list args;
+ ClientData *cd;
+ gchar *str;
+ va_list args;
request_handler_call_for_done (request_id);
@@ -329,62 +590,84 @@ tracker_dbus_request_failed (gint request_id,
g_warning ("Unset error and no error message.");
}
- g_message ("---> [%d] Failed, %s",
+ cd = client_get_for_context (context);
+
+ g_message ("---> [%d%s%s] Failed, %s",
request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "",
str);
g_free (str);
}
void
-tracker_dbus_request_info (gint request_id,
- const gchar *format,
+tracker_dbus_request_info (gint request_id,
+ DBusGMethodInvocation *context,
+ const gchar *format,
...)
{
- gchar *str;
- va_list args;
+ ClientData *cd;
+ gchar *str;
+ va_list args;
va_start (args, format);
str = g_strdup_vprintf (format, args);
va_end (args);
- tracker_info ("---- [%d] %s",
+ cd = client_get_for_context (context);
+
+ tracker_info ("---- [%d%s%s] %s",
request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "",
str);
g_free (str);
}
void
-tracker_dbus_request_comment (gint request_id,
- const gchar *format,
+tracker_dbus_request_comment (gint request_id,
+ DBusGMethodInvocation *context,
+ const gchar *format,
...)
{
- gchar *str;
- va_list args;
+ ClientData *cd;
+ gchar *str;
+ va_list args;
va_start (args, format);
str = g_strdup_vprintf (format, args);
va_end (args);
- g_message ("---- [%d] %s",
+ cd = client_get_for_context (context);
+
+ g_message ("---- [%d%s%s] %s",
request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "",
str);
g_free (str);
}
void
-tracker_dbus_request_debug (gint request_id,
- const gchar *format,
+tracker_dbus_request_debug (gint request_id,
+ DBusGMethodInvocation *context,
+ const gchar *format,
...)
{
- gchar *str;
- va_list args;
+ ClientData *cd;
+ gchar *str;
+ va_list args;
va_start (args, format);
str = g_strdup_vprintf (format, args);
va_end (args);
- g_debug ("---- [%d] %s",
+ cd = client_get_for_context (context);
+
+ g_debug ("---- [%d%s%s] %s",
request_id,
+ cd ? "|" : "",
+ cd ? cd->binary : "",
str);
g_free (str);
}
@@ -400,3 +683,16 @@ tracker_dbus_request_unblock_hooks (void)
{
block_hooks = FALSE;
}
+
+void
+tracker_dbus_enable_client_lookup (gboolean enabled)
+{
+ /* If this changed and we disabled everything, simply shut it
+ * all down.
+ */
+ if (client_lookup_enabled != enabled && !enabled) {
+ clients_shutdown ();
+ }
+
+ client_lookup_enabled = enabled;
+}
diff --git a/src/libtracker-common/tracker-dbus.h b/src/libtracker-common/tracker-dbus.h
index 16c8a2a..c00909f 100644
--- a/src/libtracker-common/tracker-dbus.h
+++ b/src/libtracker-common/tracker-dbus.h
@@ -120,25 +120,33 @@ tracker_dbus_request_add_hook (TrackerDBusRequestFunc new,
void tracker_dbus_request_remove_hook (TrackerDBusRequestHandler *handler);
void tracker_dbus_request_new (gint request_id,
+ DBusGMethodInvocation *context,
const gchar *format,
...);
-void tracker_dbus_request_success (gint request_id);
+void tracker_dbus_request_success (gint request_id,
+ DBusGMethodInvocation *context);
void tracker_dbus_request_failed (gint request_id,
+ DBusGMethodInvocation *context,
GError **error,
const gchar *format,
...);
void tracker_dbus_request_comment (gint request_id,
+ DBusGMethodInvocation *context,
const gchar *format,
...);
void tracker_dbus_request_info (gint request_id,
+ DBusGMethodInvocation *context,
const gchar *format,
...);
void tracker_dbus_request_debug (gint request_id,
+ DBusGMethodInvocation *context,
const gchar *format,
...);
void tracker_dbus_request_block_hooks (void);
void tracker_dbus_request_unblock_hooks (void);
+void tracker_dbus_enable_client_lookup (gboolean enable);
+
G_END_DECLS
#endif /* __LIBTRACKER_COMMON_DBUS_H__ */
diff --git a/src/libtracker-miner/tracker-miner.c b/src/libtracker-miner/tracker-miner.c
index 2c1635b..e0cc478 100644
--- a/src/libtracker-miner/tracker-miner.c
+++ b/src/libtracker-miner/tracker-miner.c
@@ -1308,11 +1308,10 @@ tracker_miner_dbus_get_status (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (miner != NULL, context);
- tracker_dbus_request_new (request_id, "%s()", __PRETTY_FUNCTION__);
+ tracker_dbus_request_new (request_id, context, "%s()", __PRETTY_FUNCTION__);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, miner->private->status);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -1326,11 +1325,11 @@ tracker_miner_dbus_get_progress (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (miner != NULL, context);
- tracker_dbus_request_new (request_id, "%s()", __PRETTY_FUNCTION__);
+ tracker_dbus_request_new (request_id, context, "%s()", __PRETTY_FUNCTION__);
dbus_g_method_return (context, miner->private->progress);
- tracker_dbus_request_success (request_id);
+ tracker_dbus_request_success (request_id, context);
}
void
@@ -1348,7 +1347,7 @@ tracker_miner_dbus_get_pause_details (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (miner != NULL, context);
- tracker_dbus_request_new (request_id, "%s()", __PRETTY_FUNCTION__);
+ tracker_dbus_request_new (request_id, context, "%s()", __PRETTY_FUNCTION__);
applications = NULL;
reasons = NULL;
@@ -1367,10 +1366,9 @@ tracker_miner_dbus_get_pause_details (TrackerMiner *miner,
applications_strv = tracker_gslist_to_string_list (applications);
reasons_strv = tracker_gslist_to_string_list (reasons);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, applications_strv, reasons_strv);
- tracker_dbus_request_success (request_id);
-
g_strfreev (applications_strv);
g_strfreev (reasons_strv);
@@ -1395,7 +1393,8 @@ tracker_miner_dbus_pause (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (application != NULL, context);
tracker_dbus_async_return_if_fail (reason != NULL, context);
- tracker_dbus_request_new (request_id, "%s(application:'%s', reason:'%s')",
+ tracker_dbus_request_new (request_id, context,
+ "%s(application:'%s', reason:'%s')",
__PRETTY_FUNCTION__,
application,
reason);
@@ -1404,19 +1403,19 @@ tracker_miner_dbus_pause (TrackerMiner *miner,
if (cookie == -1) {
GError *actual_error = NULL;
+ dbus_g_method_return_error (context, actual_error);
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
local_error ? local_error->message : NULL);
- dbus_g_method_return_error (context, actual_error);
g_error_free (actual_error);
g_error_free (local_error);
return;
}
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, cookie);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -1432,26 +1431,28 @@ tracker_miner_dbus_resume (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (miner != NULL, context);
- tracker_dbus_request_new (request_id, "%s(cookie:%d)",
+ tracker_dbus_request_new (request_id,
+ context,
+ "%s(cookie:%d)",
__PRETTY_FUNCTION__,
cookie);
if (!tracker_miner_resume (miner, cookie, &local_error)) {
GError *actual_error = NULL;
+ dbus_g_method_return_error (context, actual_error);
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
local_error ? local_error->message : NULL);
- dbus_g_method_return_error (context, actual_error);
g_error_free (actual_error);
g_error_free (local_error);
return;
}
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -1466,11 +1467,10 @@ tracker_miner_dbus_writeback (TrackerMiner *miner,
tracker_dbus_async_return_if_fail (miner != NULL, context);
- tracker_dbus_request_new (request_id, "%s()", __PRETTY_FUNCTION__);
+ tracker_dbus_request_new (request_id, context, "%s()", __PRETTY_FUNCTION__);
tracker_miner_writeback (miner, subjects);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
diff --git a/src/plugins/kmail/tracker-kmail-registrar.c b/src/plugins/kmail/tracker-kmail-registrar.c
index b44f421..c8bc685 100644
--- a/src/plugins/kmail/tracker-kmail-registrar.c
+++ b/src/plugins/kmail/tracker-kmail-registrar.c
@@ -404,6 +404,7 @@ tracker_kmail_registrar_set (TrackerKMailRegistrar *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
+ context,
"D-Bus request to set one: 'KMail' ");
dbus_async_return_if_fail (subject != NULL, context);
@@ -420,9 +421,8 @@ tracker_kmail_registrar_set (TrackerKMailRegistrar *object,
GUINT_TO_POINTER (modseq),
NULL);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -445,12 +445,14 @@ tracker_kmail_registrar_set_many (TrackerKMailRegistrar *object,
len = g_strv_length (subjects);
- dbus_async_return_if_fail (len == predicates->len, context);
- dbus_async_return_if_fail (len == values->len, context);
+ dbus_async_return_if_fail (predicates->len == len, context);
+ dbus_async_return_if_fail (values->len == len, context);
tracker_dbus_request_new (request_id,
- "D-Bus request to set many: 'KMail' "
- "'%d'", len);
+ context,
+ "%s(len:%d)",
+ __FUNCTION__,
+ len);
while (subjects[i] != NULL) {
perform_set (object,
@@ -464,9 +466,8 @@ tracker_kmail_registrar_set_many (TrackerKMailRegistrar *object,
GUINT_TO_POINTER (modseq),
NULL);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
@@ -482,12 +483,14 @@ tracker_kmail_registrar_unset_many (TrackerKMailRegistrar *object,
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_request_new (request_id,
- "D-Bus request to unset many: 'KMail' "
- "'%d'", g_strv_length (subjects));
-
dbus_async_return_if_fail (subjects != NULL, context);
+ tracker_dbus_request_new (request_id,
+ context,
+ "%s(len:%d)",
+ __FUNCTION__,
+ g_strv_length (subjects));
+
while (subjects[i] != NULL) {
perform_unset (object, subjects[i]);
i++;
@@ -495,9 +498,8 @@ tracker_kmail_registrar_unset_many (TrackerKMailRegistrar *object,
tracker_store_queue_commit (on_commit, NULL, GUINT_TO_POINTER (modseq), NULL);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -511,18 +513,19 @@ tracker_kmail_registrar_unset (TrackerKMailRegistrar *object,
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_request_new (request_id,
- "D-Bus request to unset one: 'KMail'");
-
dbus_async_return_if_fail (subject != NULL, context);
+ tracker_dbus_request_new (request_id,
+ context,
+ "%s()",
+ __FUNCTION__);
+
perform_unset (object, subject);
tracker_store_queue_commit (on_commit, NULL, GUINT_TO_POINTER (modseq), NULL);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -536,7 +539,9 @@ tracker_kmail_registrar_cleanup (TrackerKMailRegistrar *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
- "D-Bus request to cleanup: 'KMail'");
+ context,
+ "%s()",
+ __FUNCTION__);
perform_cleanup (object);
@@ -544,9 +549,8 @@ tracker_kmail_registrar_cleanup (TrackerKMailRegistrar *object,
GUINT_TO_POINTER (modseq),
NULL);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
diff --git a/src/tracker-extract/tracker-extract.c b/src/tracker-extract/tracker-extract.c
index de9b085..113de4e 100644
--- a/src/tracker-extract/tracker-extract.c
+++ b/src/tracker-extract/tracker-extract.c
@@ -225,10 +225,11 @@ tracker_extract_new (gboolean disable_shutdown,
}
static TrackerSparqlBuilder *
-get_file_metadata (TrackerExtract *extract,
- guint request_id,
- const gchar *uri,
- const gchar *mime)
+get_file_metadata (TrackerExtract *extract,
+ guint request_id,
+ DBusGMethodInvocation *context,
+ const gchar *uri,
+ const gchar *mime)
{
TrackerExtractPrivate *priv;
TrackerSparqlBuilder *statements;
@@ -289,6 +290,7 @@ get_file_metadata (TrackerExtract *extract,
if (error || !info) {
tracker_dbus_request_comment (request_id,
+ context,
" Could not create GFileInfo for file size check, %s",
error ? error->message : "no error given");
g_error_free (error);
@@ -305,6 +307,7 @@ get_file_metadata (TrackerExtract *extract,
mime_used = g_strdup (g_file_info_get_content_type (info));
tracker_dbus_request_comment (request_id,
+ context,
" Guessing mime type as '%s' for uri:'%s'",
mime_used,
uri);
@@ -330,6 +333,7 @@ get_file_metadata (TrackerExtract *extract,
gint items;
tracker_dbus_request_comment (request_id,
+ context,
" Extracting with module:'%s'",
g_module_name ((GModule*) mdata.module));
@@ -338,6 +342,7 @@ get_file_metadata (TrackerExtract *extract,
items = tracker_sparql_builder_get_length (statements);
tracker_dbus_request_comment (request_id,
+ context,
" Found %d metadata items",
items);
if (items == 0) {
@@ -363,6 +368,7 @@ get_file_metadata (TrackerExtract *extract,
gint items;
tracker_dbus_request_comment (request_id,
+ context,
" Extracting with module:'%s'",
g_module_name ((GModule*) mdata.module));
@@ -371,6 +377,7 @@ get_file_metadata (TrackerExtract *extract,
items = tracker_sparql_builder_get_length (statements);
tracker_dbus_request_comment (request_id,
+ context,
" Found %d metadata items",
items);
if (items == 0) {
@@ -388,9 +395,11 @@ get_file_metadata (TrackerExtract *extract,
g_free (mime_used);
tracker_dbus_request_comment (request_id,
+ context,
" Could not find any extractors to handle metadata type");
} else {
tracker_dbus_request_comment (request_id,
+ context,
" No mime available, not extracting data");
}
@@ -404,7 +413,7 @@ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
const gchar *uri,
const gchar *mime)
{
- guint request_id;
+ guint request_id;
TrackerSparqlBuilder *statements = NULL;
request_id = tracker_dbus_get_next_request_id ();
@@ -412,27 +421,30 @@ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
g_return_if_fail (uri != NULL);
tracker_dbus_request_new (request_id,
- "Command line request to extract metadata, "
- "uri:'%s', mime:%s",
+ NULL,
+ "%s(uri:'%s', mime:%s)",
+ __FUNCTION__,
uri,
mime);
/* NOTE: Don't reset the timeout to shutdown here */
- statements = get_file_metadata (object, request_id, uri, mime);
+ statements = get_file_metadata (object, request_id, NULL, uri, mime);
if (statements) {
- tracker_dbus_request_info (request_id, "%s",
+ tracker_dbus_request_info (request_id,
+ NULL,
+ "%s",
tracker_sparql_builder_get_result (statements));
g_object_unref (statements);
}
- tracker_dbus_request_success (request_id);
+ tracker_dbus_request_success (request_id, NULL);
}
void
-tracker_extract_get_pid (TrackerExtract *object,
+tracker_extract_get_pid (TrackerExtract *object,
DBusGMethodInvocation *context,
- GError **error)
+ GError **error)
{
guint request_id;
pid_t value;
@@ -440,15 +452,18 @@ tracker_extract_get_pid (TrackerExtract *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
- "D-Bus request to get PID");
+ context,
+ "%s()",
+ __FUNCTION__);
value = getpid ();
tracker_dbus_request_debug (request_id,
- "PID is %d", value);
+ context,
+ "PID is %d",
+ value);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, value);
-
- tracker_dbus_request_success (request_id);
}
void
@@ -467,12 +482,14 @@ tracker_extract_get_metadata (TrackerExtract *object,
tracker_dbus_async_return_if_fail (uri != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request to extract metadata, "
- "uri:'%s', mime:%s",
+ context,
+ "%s(uri:'%s', mime:%s)",
+ __FUNCTION__,
uri,
mime);
tracker_dbus_request_debug (request_id,
+ context,
" Resetting shutdown timeout");
priv = TRACKER_EXTRACT_GET_PRIVATE (object);
@@ -482,9 +499,11 @@ tracker_extract_get_metadata (TrackerExtract *object,
alarm (MAX_EXTRACT_TIME);
}
- sparql = get_file_metadata (object, request_id, uri, mime);
+ sparql = get_file_metadata (object, request_id, context, uri, mime);
if (sparql) {
+ tracker_dbus_request_success (request_id, context);
+
if (tracker_sparql_builder_get_length (sparql) > 0) {
/* tracker_info ("%s", tracker_sparql_builder_get_result (sparql)); */
dbus_g_method_return (context, tracker_sparql_builder_get_result (sparql));
@@ -492,11 +511,11 @@ tracker_extract_get_metadata (TrackerExtract *object,
dbus_g_method_return (context, "");
}
g_object_unref (sparql);
- tracker_dbus_request_success (request_id);
} else {
GError *actual_error = NULL;
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
"Could not get any metadata for uri:'%s' and mime:'%s'",
uri,
diff --git a/src/tracker-store/tracker-backup.c b/src/tracker-store/tracker-backup.c
index b9d7f45..de3594b 100644
--- a/src/tracker-store/tracker-backup.c
+++ b/src/tracker-store/tracker-backup.c
@@ -79,6 +79,7 @@ backup_callback (GError *error, gpointer user_data)
if (error) {
tracker_dbus_request_failed (info->request_id,
+ info->context,
&error,
NULL);
dbus_g_method_return_error (info->context, error);
@@ -91,7 +92,8 @@ backup_callback (GError *error, gpointer user_data)
dbus_g_method_return (info->context);
- tracker_dbus_request_success (info->request_id);
+ tracker_dbus_request_success (info->request_id,
+ info->context);
}
static void
@@ -121,6 +123,7 @@ tracker_backup_save (TrackerBackup *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
+ context,
"D-Bus request to save backup into '%s'",
destination_uri);
@@ -154,6 +157,7 @@ tracker_backup_restore (TrackerBackup *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
+ context,
"D-Bus request to restore backup from '%s'",
backup_uri);
diff --git a/src/tracker-store/tracker-main.c b/src/tracker-store/tracker-main.c
index 5271c4e..d672f64 100644
--- a/src/tracker-store/tracker-main.c
+++ b/src/tracker-store/tracker-main.c
@@ -317,6 +317,22 @@ get_writeback_predicates (void)
return predicates_to_signal;
}
+static void
+config_verbosity_changed_cb (GObject *object,
+ GParamSpec *spec,
+ gpointer user_data)
+{
+ gint verbosity;
+
+ verbosity = tracker_config_get_verbosity (TRACKER_CONFIG (object));
+
+ g_message ("Log verbosity is set to %d, %s D-Bus client lookup",
+ verbosity,
+ verbosity > 0 ? "enabling" : "disabling");
+
+ tracker_dbus_enable_client_lookup (verbosity > 0);
+}
+
gint
main (gint argc, gchar *argv[])
{
@@ -393,9 +409,16 @@ main (gint argc, gchar *argv[])
/* Initialize major subsystems */
config = tracker_config_new ();
+ g_signal_connect (config, "notify::verbosity",
+ G_CALLBACK (config_verbosity_changed_cb),
+ NULL);
+
/* Daemon command line arguments */
if (verbosity > -1) {
tracker_config_set_verbosity (config, verbosity);
+ } else {
+ /* Make sure we enable/disable the dbus client lookup */
+ config_verbosity_changed_cb (G_OBJECT (config), NULL, NULL);
}
if (low_memory) {
@@ -485,6 +508,7 @@ main (gint argc, gchar *argv[])
tracker_data_manager_shutdown ();
tracker_log_shutdown ();
+ g_signal_handlers_disconnect_by_func (config, config_verbosity_changed_cb, NULL);
g_object_unref (config);
g_print ("\nOK\n\n");
diff --git a/src/tracker-store/tracker-resources.c b/src/tracker-store/tracker-resources.c
index 4a61559..d716856 100644
--- a/src/tracker-store/tracker-resources.c
+++ b/src/tracker-store/tracker-resources.c
@@ -143,15 +143,16 @@ turtle_import_callback (GError *error, gpointer user_data)
if (error) {
tracker_dbus_request_failed (info->request_id,
+ info->context,
&error,
NULL);
dbus_g_method_return_error (info->context, error);
return;
}
+ tracker_dbus_request_success (info->request_id,
+ info->context);
dbus_g_method_return (info->context);
-
- tracker_dbus_request_success (info->request_id);
}
void
@@ -169,8 +170,9 @@ tracker_resources_load (TrackerResources *object,
tracker_dbus_async_return_if_fail (uri != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request to load turtle file "
- "'%s'",
+ context,
+ "%s(): uri:'%s'",
+ __FUNCTION__,
uri);
file = g_file_new_for_uri (uri);
@@ -193,7 +195,7 @@ tracker_resources_sparql_query (TrackerResources *self,
GError **error)
{
TrackerDBResultSet *result_set;
- GError *actual_error = NULL;
+ GError *actual_error = NULL;
guint request_id;
GPtrArray *values;
@@ -202,14 +204,16 @@ tracker_resources_sparql_query (TrackerResources *self,
tracker_dbus_async_return_if_fail (query != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request for SPARQL Query, "
- "query:'%s'",
+ context,
+ "%s(): '%s'",
+ __FUNCTION__,
query);
result_set = tracker_store_sparql_query (query, &actual_error);
if (actual_error) {
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
NULL);
dbus_g_method_return_error (context, actual_error);
@@ -219,6 +223,7 @@ tracker_resources_sparql_query (TrackerResources *self,
values = tracker_dbus_query_result_to_ptr_array (result_set);
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, values);
tracker_dbus_results_ptr_array_free (&values);
@@ -226,15 +231,13 @@ tracker_resources_sparql_query (TrackerResources *self,
if (result_set) {
g_object_unref (result_set);
}
-
- tracker_dbus_request_success (request_id);
}
void
tracker_resources_sparql_update (TrackerResources *self,
const gchar *update,
DBusGMethodInvocation *context,
- GError **error)
+ GError **error)
{
TrackerResourcesPrivate *priv;
GError *actual_error = NULL;
@@ -247,14 +250,16 @@ tracker_resources_sparql_update (TrackerResources *self,
tracker_dbus_async_return_if_fail (update != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request for SPARQL Update, "
- "update:'%s'",
+ context,
+ "%s(): '%s'",
+ __FUNCTION__,
update);
tracker_store_sparql_update (update, &actual_error);
if (actual_error) {
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
NULL);
dbus_g_method_return_error (context, actual_error);
@@ -262,13 +267,12 @@ tracker_resources_sparql_update (TrackerResources *self,
return;
}
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
}
void
-tracker_resources_sparql_update_blank (TrackerResources *self,
+tracker_resources_sparql_update_blank (TrackerResources *self,
const gchar *update,
DBusGMethodInvocation *context,
GError **error)
@@ -285,14 +289,16 @@ tracker_resources_sparql_update_blank (TrackerResources *self,
tracker_dbus_async_return_if_fail (update != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request for SPARQL Update, "
- "update:'%s'",
+ context,
+ "%s(): '%s'",
+ __FUNCTION__,
update);
blank_nodes = tracker_store_sparql_update_blank (update, &actual_error);
if (actual_error) {
tracker_dbus_request_failed (request_id,
+ context,
&actual_error,
NULL);
dbus_g_method_return_error (context, actual_error);
@@ -300,6 +306,7 @@ tracker_resources_sparql_update_blank (TrackerResources *self,
return;
}
+ tracker_dbus_request_success (request_id, context);
dbus_g_method_return (context, blank_nodes);
if (blank_nodes) {
@@ -311,8 +318,6 @@ tracker_resources_sparql_update_blank (TrackerResources *self,
}
g_ptr_array_free (blank_nodes, TRUE);
}
-
- tracker_dbus_request_success (request_id);
}
static void
@@ -322,15 +327,16 @@ batch_update_callback (GError *error, gpointer user_data)
if (error) {
tracker_dbus_request_failed (info->request_id,
+ info->context,
&error,
NULL);
dbus_g_method_return_error (info->context, error);
return;
}
+ tracker_dbus_request_success (info->request_id,
+ info->context);
dbus_g_method_return (info->context);
-
- tracker_dbus_request_success (info->request_id);
}
void
@@ -351,8 +357,9 @@ tracker_resources_batch_sparql_update (TrackerResources *self,
tracker_dbus_async_return_if_fail (update != NULL, context);
tracker_dbus_request_new (request_id,
- "D-Bus request for batch SPARQL Update, "
- "update:'%s'",
+ context,
+ "%s(): '%s'",
+ __FUNCTION__,
update);
info = g_slice_new (TrackerDBusMethodInfo);
@@ -373,8 +380,9 @@ batch_commit_callback (gpointer user_data)
{
TrackerDBusMethodInfo *info = user_data;
+ tracker_dbus_request_success (info->request_id,
+ info->context);
dbus_g_method_return (info->context);
- tracker_dbus_request_success (info->request_id);
}
void
@@ -392,7 +400,9 @@ tracker_resources_batch_commit (TrackerResources *self,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
- "D-Bus request for batch commit");
+ context,
+ "%s()",
+ __FUNCTION__);
info = g_slice_new (TrackerDBusMethodInfo);
diff --git a/src/tracker-store/tracker-statistics.c b/src/tracker-store/tracker-statistics.c
index aac5c75..58fa1ff 100644
--- a/src/tracker-store/tracker-statistics.c
+++ b/src/tracker-store/tracker-statistics.c
@@ -212,7 +212,7 @@ tracker_statistics_get (TrackerStatistics *object,
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_block_hooks ();
- tracker_dbus_request_new (request_id, __FUNCTION__);
+ tracker_dbus_request_new (request_id, context, "%s()", __FUNCTION__);
priv = TRACKER_STATISTICS_GET_PRIVATE (object);
@@ -246,7 +246,7 @@ tracker_statistics_get (TrackerStatistics *object,
g_ptr_array_foreach (values, (GFunc) g_strfreev, NULL);
g_ptr_array_free (values, TRUE);
- tracker_dbus_request_success (request_id);
+ tracker_dbus_request_success (request_id, context);
tracker_dbus_request_unblock_hooks ();
}
diff --git a/tests/libtracker-common/tracker-dbus-test.c b/tests/libtracker-common/tracker-dbus-test.c
index fa5b876..d7b99d2 100644
--- a/tests/libtracker-common/tracker-dbus-test.c
+++ b/tests/libtracker-common/tracker-dbus-test.c
@@ -157,14 +157,14 @@ test_dbus_request_failed (void)
/* Default case: we set the error */
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
- tracker_dbus_request_failed (1, &error, "Test Error message");
+ tracker_dbus_request_failed (1, NULL, &error, "Test Error message");
}
g_test_trap_assert_stderr ("*Test Error message*");
/* Second common case: we have already the error and want only the log line */
error = g_error_new (1000, -1, "The indexer founded an error");
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
- tracker_dbus_request_failed (1, &error, NULL);
+ tracker_dbus_request_failed (1, NULL, &error, NULL);
}
g_test_trap_assert_stderr ("*The indexer founded an error*");
g_error_free (error);
@@ -173,7 +173,7 @@ test_dbus_request_failed (void)
/* Wrong use: error set and we add a new message */
error = g_error_new (1000, -1, "The indexer founded an error");
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
- tracker_dbus_request_failed (1, &error, "Dont do this");
+ tracker_dbus_request_failed (1, NULL, &error, "Dont do this");
}
g_test_trap_assert_stderr ("*GError set over the top of a previous GError or uninitialized memory*");
g_error_free (error);
@@ -181,7 +181,7 @@ test_dbus_request_failed (void)
error = NULL;
/* Wrong use: no error, no message */
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
- tracker_dbus_request_failed (1, &error, NULL);
+ tracker_dbus_request_failed (1, NULL, &error, NULL);
}
g_test_trap_assert_stderr ("*Unset error and no error message*");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]