Re: [PATCH] libnm-glib: suppress warnings unless LIBNM_GLIB_DEBUG is set



On Thu, 2014-02-13 at 11:17 -0500, Dan Winship wrote:
sure. The "unknown object type" one always annoys me...

Pushed.

Dan


On 02/06/2014 05:51 AM, Dan Williams wrote:
Most of these warnings are things libnm-glib can't do anything
about, and they are pretty annoying when running nmcli or nmtui,
and libraries usually shouldn't print random warnings anyway.
Downgrade them to debug messages that can be enabled if we need
to see them.
---
 libnm-glib/nm-object.c | 77 +++++++++++++++++++++++---------------------------
 1 file changed, 36 insertions(+), 41 deletions(-)

diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c
index 497f6c3..2fbc4f1 100644
--- a/libnm-glib/nm-object.c
+++ b/libnm-glib/nm-object.c
@@ -150,15 +150,15 @@ constructor (GType type,
    object = G_OBJECT_CLASS (nm_object_parent_class)->constructor (type,
                                                                   n_construct_params,
                                                                   construct_params);
 
    priv = NM_OBJECT_GET_PRIVATE (object);
 
    if (priv->connection == NULL || priv->path == NULL) {
-           g_warning ("%s: bus connection and path required.", __func__);
+           g_warn_if_reached ();
            g_object_unref (object);
            return NULL;
    }
 
    _nm_object_cache_add (NM_OBJECT (object));
 
    return object;
@@ -566,27 +566,26 @@ _nm_object_create (GType type, DBusGConnection *connection, const char *path)
    GError *error = NULL;
 
    type_func = g_hash_table_lookup (type_funcs, GSIZE_TO_POINTER (type));
    if (type_func)
            type = type_func (connection, path);
 
    if (type == G_TYPE_INVALID) {
-           g_warning ("Could not create object for %s: unknown object type", path);
+           dbgmsg ("Could not create object for %s: unknown object type", path);
            return NULL;
    }
 
    object = g_object_new (type,
                           NM_OBJECT_DBUS_CONNECTION, connection,
                           NM_OBJECT_DBUS_PATH, path,
                           NULL);
    if (!g_initable_init (G_INITABLE (object), NULL, &error)) {
-           g_object_unref (object);
-           object = NULL;
-           g_warning ("Could not create object for %s: %s", path, error->message);
+           dbgmsg ("Could not create object for %s: %s", path, error->message);
            g_error_free (error);
+           g_clear_object (&object);
    }
 
    return object;
 }
 
 typedef void (*NMObjectCreateCallbackFunc) (GObject *, const char *, gpointer);
 typedef struct {
@@ -620,21 +619,19 @@ static void
 async_inited (GObject *source, GAsyncResult *result, gpointer user_data)
 {
    NMObjectTypeAsyncData *async_data = user_data;
    GObject *object = G_OBJECT (source);
    GError *error = NULL;
 
    if (!g_async_initable_init_finish (G_ASYNC_INITABLE (object), result, &error)) {
-           if (!g_error_matches (error, DBUS_GERROR, DBUS_GERROR_UNKNOWN_METHOD)) {
-                   g_warning ("Could not create object for %s: %s",
-                              nm_object_or_connection_get_path (object), error->message);
-           }
+           dbgmsg ("Could not create object for %s: %s",
+                   nm_object_or_connection_get_path (object),
+                   error->message);
            g_error_free (error);
-           g_object_unref (object);
-           object = NULL;
+           g_clear_object (&object);
    }
 
    create_async_complete (object, async_data);
 }
 
 static void
 async_got_type (GType type, gpointer user_data)
@@ -1024,18 +1021,18 @@ handle_property_changed (NMObject *self, const char *dbus_name, GValue *value, g
    if (!found) {
            dbgmsg ("Property '%s' unhandled.", prop_name);
            goto out;
    }
 
    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (self)), prop_name);
    if (!pspec) {
-           g_warning ("%s: property '%s' changed but wasn't defined by object type %s.",
-                      __func__,
-                      prop_name,
-                      G_OBJECT_TYPE_NAME (self));
+           dbgmsg ("%s: property '%s' changed but wasn't defined by object type %s.",
+                   __func__,
+                   prop_name,
+                   G_OBJECT_TYPE_NAME (self));
            goto out;
    }
 
    if (G_UNLIKELY (debug)) {
            char *s;
            s = g_strdup_value_contents (value);
            dbgmsg ("PC: (%p) %s::%s => '%s' (%s%s%s)",
@@ -1057,18 +1054,18 @@ handle_property_changed (NMObject *self, const char *dbus_name, GValue *value, g
                    g_warn_if_reached ();
                    goto out;
            }
    } else
            success = (*(pi->func)) (self, pspec, value, pi->field);
 
    if (!success) {
-           g_warning ("%s: failed to update property '%s' of object type %s.",
-                      __func__,
-                      prop_name,
-                      G_OBJECT_TYPE_NAME (self));
+           dbgmsg ("%s: failed to update property '%s' of object type %s.",
+                   __func__,
+                   prop_name,
+                   G_OBJECT_TYPE_NAME (self));
    }
 
 out:
    g_free (prop_name);
 }
 
 static void
@@ -1082,16 +1079,16 @@ process_properties_changed (NMObject *self, GHashTable *properties, gboolean syn
            return;
 
    g_hash_table_iter_init (&iter, properties);
    while (g_hash_table_iter_next (&iter, &name, &value)) {
            if (value)
                    handle_property_changed (self, name, value, synchronously);
            else {
-                   g_warning ("%s:%d %s(): object %s property '%s' value is unexpectedly NULL",
-                              __FILE__, __LINE__, __func__, G_OBJECT_TYPE_NAME (self), (const char *) 
name);
+                   dbgmsg ("%s:%d %s(): object %s property '%s' value is unexpectedly NULL",
+                           __FILE__, __LINE__, __func__, G_OBJECT_TYPE_NAME (self), (const char *) name);
            }
    }
 }
 
 static void
 properties_changed_proxy (DBusGProxy *proxy,
                           GHashTable *properties,
@@ -1143,27 +1140,29 @@ demarshal_generic (NMObject *object,
    HANDLE_TYPE(INT, int, int)
    HANDLE_TYPE(UINT, uint, uint)
    HANDLE_TYPE(INT64, int, int)
    HANDLE_TYPE(UINT64, uint, uint)
    HANDLE_TYPE(LONG, long, long)
    HANDLE_TYPE(ULONG, ulong, ulong)
    } else {
-           g_warning ("%s: %s/%s unhandled type %s.",
-                      __func__, G_OBJECT_TYPE_NAME (object), pspec->name,
-                      g_type_name (pspec->value_type));
+           dbgmsg ("%s: %s/%s unhandled type %s.",
+                   __func__,
+                   G_OBJECT_TYPE_NAME (object),
+                   pspec->name,
+                   g_type_name (pspec->value_type));
            success = FALSE;
    }
 
 done:
    if (success) {
            _nm_object_queue_notify (object, pspec->name);
    } else {
-           g_warning ("%s: %s/%s (type %s) couldn't be set with type %s.",
-                      __func__, G_OBJECT_TYPE_NAME (object), pspec->name,
-                      g_type_name (pspec->value_type), G_VALUE_TYPE_NAME (value));
+           dbgmsg ("%s: %s/%s (type %s) couldn't be set with type %s.",
+                   __func__, G_OBJECT_TYPE_NAME (object), pspec->name,
+                   g_type_name (pspec->value_type), G_VALUE_TYPE_NAME (value));
    }
    return success;
 }
 
 void
 _nm_object_register_properties (NMObject *object,
                                 DBusGProxy *proxy,
@@ -1254,17 +1253,18 @@ void
 _nm_object_ensure_inited (NMObject *object)
 {
    NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
    GError *error = NULL;
 
    if (!priv->inited) {
            if (!g_initable_init (G_INITABLE (object), NULL, &error)) {
-                   g_warning ("Could not initialize %s %s: %s",
-                              G_OBJECT_TYPE_NAME (object), priv->path,
-                              error->message);
+                   dbgmsg ("Could not initialize %s %s: %s",
+                           G_OBJECT_TYPE_NAME (object),
+                           priv->path,
+                           error->message);
                    g_error_free (error);
 
                    /* Only warn once */
                    priv->inited = TRUE;
            }
    }
 }
@@ -1287,25 +1287,20 @@ _nm_object_reload_property (NMObject *object,
    if (!dbus_g_proxy_call_with_timeout (NM_OBJECT_GET_PRIVATE (object)->properties_proxy,
                                         "Get", 15000, &err,
                                         G_TYPE_STRING, interface,
                                         G_TYPE_STRING, prop_name,
                                         G_TYPE_INVALID,
                                         G_TYPE_VALUE, &value,
                                         G_TYPE_INVALID)) {
-           /* Don't warn about D-Bus no reply/timeout errors; it's mostly noise and
-            * happens for example when NM quits and the applet is still running.
-            */
-           if (!g_error_matches (err, DBUS_GERROR, DBUS_GERROR_NO_REPLY)) {
-                   g_warning ("%s: Error getting '%s' for %s: (%d) %s\n",
-                              __func__,
-                              prop_name,
-                              nm_object_get_path (object),
-                              err->code,
-                              err->message);
-           }
+           dbgmsg ("%s: Error getting '%s' for %s: (%d) %s\n",
+                   __func__,
+                   prop_name,
+                   nm_object_get_path (object),
+                   err->code,
+                   err->message);
            g_clear_error (&err);
            return;
    }
 
    handle_property_changed (object, prop_name, &value, TRUE);
    g_value_unset (&value);
 }





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