]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Improve debug traces for async events
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Oct 2018 15:22:17 +0000 (16:22 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Oct 2018 15:22:17 +0000 (16:22 +0100)
src/libserver/events.c
src/libserver/events.h
src/libserver/symbols_cache.c
src/libserver/symbols_cache.h

index 55e04985b8952c6dc20d75e3ef2a4ee2a9ce6cd0..2fd0c55ff4a5fae541499ebac9684103e4a39645 100644 (file)
@@ -49,6 +49,7 @@ static struct rspamd_counter_data events_count;
 
 struct rspamd_async_event {
        const gchar *subsystem;
+       const gchar *loc;
        event_finalizer_t fin;
        void *user_data;
 };
@@ -145,10 +146,11 @@ rspamd_session_create (rspamd_mempool_t * pool,
 }
 
 struct rspamd_async_event *
-rspamd_session_add_event (struct rspamd_async_session *session,
-                                                 event_finalizer_t fin,
-                                                 gpointer user_data,
-                                                 const gchar *subsystem)
+rspamd_session_add_event_full (struct rspamd_async_session *session,
+                                                          event_finalizer_t fin,
+                                                          gpointer user_data,
+                                                          const gchar *subsystem,
+                                                          const gchar *loc)
 {
        struct rspamd_async_event *new_event;
        gint ret;
@@ -171,12 +173,14 @@ rspamd_session_add_event (struct rspamd_async_session *session,
        new_event->fin = fin;
        new_event->user_data = user_data;
        new_event->subsystem = subsystem;
+       new_event->loc = loc;
 
        msg_debug_session ("added event: %p, pending %d (+1) events, "
-                                          "subsystem: %s",
+                                          "subsystem: %s (%s)",
                        user_data,
                        kh_size (session->events),
-                       subsystem);
+                       subsystem,
+                       loc);
 
        kh_put (rspamd_events_hash, session->events, new_event, &ret);
        g_assert (ret > 0);
@@ -185,9 +189,10 @@ rspamd_session_add_event (struct rspamd_async_session *session,
 }
 
 void
-rspamd_session_remove_event (struct rspamd_async_session *session,
-       event_finalizer_t fin,
-       void *ud)
+rspamd_session_remove_event_full (struct rspamd_async_session *session,
+                                                                 event_finalizer_t fin,
+                                                                 void *ud,
+                                                                 const gchar *loc)
 {
        struct rspamd_async_event search_ev, *found_ev;
        khiter_t k;
@@ -209,10 +214,11 @@ rspamd_session_remove_event (struct rspamd_async_session *session,
        if (k == kh_end (session->events)) {
                gchar t;
 
-               msg_err_session ("cannot find event: %p(%p)", fin, ud);
+               msg_err_session ("cannot find event: %p(%p) from %s", fin, ud, loc);
                kh_foreach (session->events, found_ev, t, {
-                       msg_err_session ("existing event %s: %p(%p)",
+                       msg_err_session ("existing event %s (%s): %p(%p)",
                                        found_ev->subsystem,
+                                       found_ev->loc,
                                        found_ev->fin,
                                        found_ev->user_data);
                });
@@ -224,10 +230,12 @@ rspamd_session_remove_event (struct rspamd_async_session *session,
 
        found_ev = kh_key (session->events, k);
        msg_debug_session ("removed event: %p, pending %d (-1) events, "
-                                          "subsystem: %s",
+                                          "subsystem: %s (%s), added at %s",
                        ud,
                        kh_size (session->events),
-                       found_ev->subsystem);
+                       found_ev->subsystem,
+                       loc,
+                       found_ev->loc);
        kh_del (rspamd_events_hash, session->events, k);
 
        /* Remove event */
index 1cb5dfa11315ca8988f3a7ac8cd9aa939104371e..7e0de874905d807c7d75eeff7a2211b7587c7d05 100644 (file)
@@ -46,10 +46,13 @@ struct rspamd_async_session * rspamd_session_create (rspamd_mempool_t *pool,
  * @param forced unused
  */
 struct rspamd_async_event *
-rspamd_session_add_event (struct rspamd_async_session *session,
+rspamd_session_add_event_full (struct rspamd_async_session *session,
                                                  event_finalizer_t fin,
                                                  gpointer user_data,
-                                                 const gchar *subsystem);
+                                                 const gchar *subsystem,
+                                                 const gchar *loc);
+#define rspamd_session_add_event(session, fin, user_data, subsystem) \
+       rspamd_session_add_event_full(session, fin, user_data, subsystem, G_STRLOC)
 
 /**
  * Remove normal event
@@ -57,9 +60,12 @@ rspamd_session_add_event (struct rspamd_async_session *session,
  * @param fin final callback
  * @param ud user data object
  */
-void rspamd_session_remove_event (struct rspamd_async_session *session,
-       event_finalizer_t fin,
-       gpointer ud);
+void rspamd_session_remove_event_full (struct rspamd_async_session *session,
+                                                                 event_finalizer_t fin,
+                                                                 gpointer ud,
+                                                                 const gchar *loc);
+#define rspamd_session_remove_event(session, fin, user_data) \
+       rspamd_session_remove_event_full(session, fin, user_data, G_STRLOC)
 
 /**
  * Must be called at the end of session, it calls fin functions for all non-forced callbacks
index e754e2d10e96b24e9f4fb8b3a1072468f71c680a..32c81e3c9689ee12664d6d15b8490a7fc2da020f 100644 (file)
@@ -2676,33 +2676,36 @@ rspamd_symbols_cache_finalize_item (struct rspamd_task *task,
 }
 
 guint
-rspamd_symcache_item_async_inc (struct rspamd_task *task,
+rspamd_symcache_item_async_inc_full (struct rspamd_task *task,
                                                                struct rspamd_symcache_item *item,
-                                                               const gchar *subsystem)
+                                                               const gchar *subsystem,
+                                                               const gchar *loc)
 {
-       msg_debug_cache_task ("increase async events counter for %s(%d) = %d + 1; subsystem %s",
-                       item->symbol, item->id, item->async_events, subsystem);
+       msg_debug_cache_task ("increase async events counter for %s(%d) = %d + 1; subsystem %s (%s)",
+                       item->symbol, item->id, item->async_events, subsystem, loc);
        return ++item->async_events;
 }
 
 guint
-rspamd_symcache_item_async_dec (struct rspamd_task *task,
+rspamd_symcache_item_async_dec_full (struct rspamd_task *task,
                                                                struct rspamd_symcache_item *item,
-                                                               const gchar *subsystem)
+                                                               const gchar *subsystem,
+                                                               const gchar *loc)
 {
-       msg_debug_cache_task ("decrease async events counter for %s(%d) = %d - 1; subsystem %s",
-                       item->symbol, item->id, item->async_events, subsystem);
+       msg_debug_cache_task ("decrease async events counter for %s(%d) = %d - 1; subsystem %s (%s)",
+                       item->symbol, item->id, item->async_events, subsystem, loc);
        g_assert (item->async_events > 0);
 
        return --item->async_events;
 }
 
 gboolean
-rspamd_symcache_item_async_dec_check (struct rspamd_task *task,
+rspamd_symcache_item_async_dec_check_full (struct rspamd_task *task,
                                                                          struct rspamd_symcache_item *item,
-                                                                         const gchar *subsystem)
+                                                                         const gchar *subsystem,
+                                                                         const gchar *loc)
 {
-       if (rspamd_symcache_item_async_dec (task, item, subsystem) == 0) {
+       if (rspamd_symcache_item_async_dec_full (task, item, subsystem, loc) == 0) {
                rspamd_symbols_cache_finalize_item (task, item);
 
                return TRUE;
index 73a46c27091feae6eb4e02647c3c99a5d80ddcff..d3983f91d269147830b018c37f53da96f34da3fa 100644 (file)
@@ -315,16 +315,21 @@ void rspamd_symbols_cache_finalize_item (struct rspamd_task *task,
 /*
  * Increase number of async events pending for an item
  */
-guint rspamd_symcache_item_async_inc (struct rspamd_task *task,
+guint rspamd_symcache_item_async_inc_full (struct rspamd_task *task,
                                                                          struct rspamd_symcache_item *item,
-                                                                         const gchar *subsystem);
+                                                                         const gchar *subsystem,
+                                                                         const gchar *loc);
+#define rspamd_symcache_item_async_inc(task, item, subsystem) \
+       rspamd_symcache_item_async_inc_full(task, item, subsystem, G_STRLOC)
 /*
  * Decrease number of async events pending for an item, asserts if no events pending
  */
-guint rspamd_symcache_item_async_dec (struct rspamd_task *task,
+guint rspamd_symcache_item_async_dec_full (struct rspamd_task *task,
                                                                          struct rspamd_symcache_item *item,
-                                                                         const gchar *subsystem);
-
+                                                                         const gchar *subsystem,
+                                                                         const gchar *loc);
+#define rspamd_symcache_item_async_dec(task, item, subsystem) \
+       rspamd_symcache_item_async_dec_full(task, item, subsystem, G_STRLOC)
 /**
  * Decrease number of async events pending for an item, asserts if no events pending
  * If no events are left, this function calls `rspamd_symbols_cache_finalize_item` and returns TRUE
@@ -332,7 +337,10 @@ guint rspamd_symcache_item_async_dec (struct rspamd_task *task,
  * @param item
  * @return
  */
-gboolean rspamd_symcache_item_async_dec_check (struct rspamd_task *task,
+gboolean rspamd_symcache_item_async_dec_check_full (struct rspamd_task *task,
                                                                                           struct rspamd_symcache_item *item,
-                                                                                          const gchar *subsystem);
+                                                                                          const gchar *subsystem,
+                                                                                          const gchar *loc);
+#define rspamd_symcache_item_async_dec_check(task, item, subsystem) \
+       rspamd_symcache_item_async_dec_check_full(task, item, subsystem, G_STRLOC)
 #endif