You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bc...@apache.org on 2014/05/06 21:54:05 UTC

git commit: TS-1375: Setting default inactivity timeout, if one is not set, to 1 day

Repository: trafficserver
Updated Branches:
  refs/heads/master 7d2833e74 -> 6397b1610


TS-1375: Setting default inactivity timeout, if one is not set, to 1 day


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/6397b161
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/6397b161
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/6397b161

Branch: refs/heads/master
Commit: 6397b16105cd0a48db609e924f3a567bd8f08ac0
Parents: 7d2833e
Author: Bryan Call <bc...@apache.org>
Authored: Tue May 6 12:53:58 2014 -0700
Committer: Bryan Call <bc...@apache.org>
Committed: Tue May 6 12:53:58 2014 -0700

----------------------------------------------------------------------
 CHANGES               |  2 ++
 iocore/net/UnixNet.cc | 23 +++++++++++++++++++----
 mgmt/RecordsConfig.cc |  2 ++
 3 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6397b161/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 751bc93..2f01c42 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.0.0
 
+  *) [TS-1375] Setting default inactivity timeout, if one is not set, to 1 day
+
   *) [TS-2780] Core dump in SpdyRequest::clear() in production testing of SPDY
 
   *) [TS-2744] Remove TSNetAcceptNamedProtocol assertion for unknown protocols.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6397b161/iocore/net/UnixNet.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixNet.cc b/iocore/net/UnixNet.cc
index 69b620f..33806a1 100644
--- a/iocore/net/UnixNet.cc
+++ b/iocore/net/UnixNet.cc
@@ -38,9 +38,12 @@ extern "C" void fd_reify(struct ev_loop *);
 // INKqa10496
 // One Inactivity cop runs on each thread once every second and
 // loops through the list of NetVCs and calls the timeouts
-struct InactivityCop : public Continuation {
-  InactivityCop(ProxyMutex *m):Continuation(m) {
+class InactivityCop : public Continuation {
+public:
+  InactivityCop(ProxyMutex *m):Continuation(m), default_inactivity_timeout(0) {
     SET_HANDLER(&InactivityCop::check_inactivity);
+    REC_ReadConfigInteger(default_inactivity_timeout, "proxy.config.net.default_inactivity_timeout");
+    Debug("inactivity_cop", "default inactivity timeout is set to: %d", default_inactivity_timeout);
   }
   int check_inactivity(int event, Event *e) {
     (void) event;
@@ -52,7 +55,7 @@ struct InactivityCop : public Continuation {
         nh->cop_list.push(vc);
     }
     while (UnixNetVConnection *vc = nh->cop_list.pop()) {
-      // If we cannot ge tthe lock don't stop just keep cleaning
+      // If we cannot get the lock don't stop just keep cleaning
       MUTEX_TRY_LOCK(lock, vc->mutex, this_ethread());
       if (!lock.lock_acquired) {
        NET_INCREMENT_DYN_STAT(inactivity_cop_lock_acquire_failure_stat);
@@ -62,12 +65,24 @@ struct InactivityCop : public Continuation {
       if (vc->closed) {
         close_UnixNetVConnection(vc, e->ethread);
         continue;
-      } 
+      }
+
+      // set a default inactivity timeout if one is not set
+      if (vc->next_inactivity_timeout_at == 0 && default_inactivity_timeout > 0) {
+        Debug("inactivity_cop", "vc: %p inactivity timeout not set, setting a default of %d", vc, default_inactivity_timeout);
+        vc->set_inactivity_timeout(HRTIME_SECONDS(default_inactivity_timeout));
+      } else {
+        Debug("inactivity_cop_verbose", "vc: %p timeout at: %" PRId64 " timeout in: %" PRId64, vc, ink_hrtime_to_sec(vc->next_inactivity_timeout_at),
+            ink_hrtime_to_sec(vc->inactivity_timeout_in));
+      }
+
       if (vc->next_inactivity_timeout_at && vc->next_inactivity_timeout_at < now)
         vc->handleEvent(EVENT_IMMEDIATE, e);
     }
     return 0;
   }
+private:
+  int default_inactivity_timeout;  // only used when one is not set for some bad reason
 };
 #endif
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6397b161/mgmt/RecordsConfig.cc
----------------------------------------------------------------------
diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc
index d3a3529..a6458dd 100644
--- a/mgmt/RecordsConfig.cc
+++ b/mgmt/RecordsConfig.cc
@@ -807,6 +807,8 @@ RecordElement RecordsConfig[] = {
   ,
   {RECT_CONFIG, "proxy.config.net.poll_timeout", RECD_INT, "10", RECU_NULL, RR_NULL, RECC_NULL, NULL, RECA_NULL}
   ,
+  {RECT_CONFIG, "proxy.config.net.default_inactivity_timeout", RECD_INT, "86400", RECU_NULL, RR_NULL, RECC_NULL, NULL, RECA_NULL}
+  ,
 
   //##############################################################################
   //#