You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by sh...@apache.org on 2019/05/08 13:47:37 UTC

[trafficserver] branch master updated: Additional places to propagate the per-client-ip debug tags.

This is an automated email from the ASF dual-hosted git repository.

shinrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new c13a1f0  Additional places to propagate the per-client-ip debug tags.
c13a1f0 is described below

commit c13a1f06ba46de7bfd7fdcceabdeb4b23529b337
Author: Susan Hinrichs <sh...@oath.com>
AuthorDate: Tue May 7 14:16:20 2019 +0000

    Additional places to propagate the per-client-ip debug tags.
---
 iocore/eventsystem/P_UnixEThread.h | 10 ++++++++++
 iocore/eventsystem/UnixEThread.cc  |  4 ++++
 2 files changed, 14 insertions(+)

diff --git a/iocore/eventsystem/P_UnixEThread.h b/iocore/eventsystem/P_UnixEThread.h
index 834a6c9..d597d48 100644
--- a/iocore/eventsystem/P_UnixEThread.h
+++ b/iocore/eventsystem/P_UnixEThread.h
@@ -95,6 +95,11 @@ EThread::schedule(Event *e, bool fast_signal)
     e->mutex = e->continuation->mutex = e->ethread->mutex;
   }
   ink_assert(e->mutex.get());
+
+  // Make sure client IP debugging works consistently
+  // The continuation that gets scheduled later is not always the
+  // client VC, it can be HttpCacheSM etc. so save the flags
+  e->continuation->control_flags.set_flags(get_cont_flags().get_flags());
   EventQueueExternal.enqueue(e, fast_signal);
   return e;
 }
@@ -153,6 +158,11 @@ EThread::schedule_local(Event *e)
     ink_assert(e->ethread == this);
   }
   e->globally_allocated = false;
+
+  // Make sure client IP debugging works consistently
+  // The continuation that gets scheduled later is not always the
+  // client VC, it can be HttpCacheSM etc. so save the flags
+  e->continuation->control_flags.set_flags(get_cont_flags().get_flags());
   EventQueueExternal.enqueue_local(e);
   return e;
 }
diff --git a/iocore/eventsystem/UnixEThread.cc b/iocore/eventsystem/UnixEThread.cc
index 03b31c3..3766e54 100644
--- a/iocore/eventsystem/UnixEThread.cc
+++ b/iocore/eventsystem/UnixEThread.cc
@@ -129,6 +129,10 @@ EThread::process_event(Event *e, int calling_code)
     }
     Continuation *c_temp = e->continuation;
     // Make sure that the continuation is locked before calling the handler
+
+    // Restore the client IP debugging flags
+    set_cont_flags(e->continuation->control_flags);
+
     e->continuation->handleEvent(calling_code, e);
     ink_assert(!e->in_the_priority_queue);
     ink_assert(c_temp == e->continuation);