You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2015/08/27 19:31:10 UTC

[3/9] trafficserver git commit: TS-3642: Make server session sharing config values worked as documented.

TS-3642: Make server session sharing config values worked as documented.


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

Branch: refs/heads/5.3.x
Commit: a582707b2adf719f06575319967dfec1d4a8260b
Parents: 492e7be
Author: Alan M. Carroll <am...@apache.org>
Authored: Mon Jun 29 17:48:27 2015 -0500
Committer: Phil Sorber <so...@apache.org>
Committed: Thu Aug 27 11:21:17 2015 -0600

----------------------------------------------------------------------
 CHANGES                  |  2 ++
 lib/records/RecCore.cc   | 24 ++++++++++++++++++++++++
 proxy/http/HttpConfig.cc | 27 +++++++++++++++++++--------
 3 files changed, 45 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a582707b/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 3735302..fd2bcd0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.3.2
 
+  *) [TS-3642] Server session sharing configuration not working.
+
   *) [TS-3650] Track source of configuration values.
 
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a582707b/lib/records/RecCore.cc
----------------------------------------------------------------------
diff --git a/lib/records/RecCore.cc b/lib/records/RecCore.cc
index fe4cbc0..5babfad 100644
--- a/lib/records/RecCore.cc
+++ b/lib/records/RecCore.cc
@@ -748,6 +748,30 @@ RecSetRecordAccessType(const char *name, RecAccessT access, bool lock)
   return err;
 }
 
+int
+RecGetRecordSource(const char *name, RecSourceT *source, bool lock)
+{
+  int err = REC_ERR_FAIL;
+  RecRecord *r = NULL;
+
+  if (lock) {
+    ink_rwlock_rdlock(&g_records_rwlock);
+  }
+
+  if (ink_hash_table_lookup(g_records_ht, name, (void **)&r)) {
+    rec_mutex_acquire(&(r->lock));
+    *source = r->config_meta.source;
+    err = REC_ERR_OKAY;
+    rec_mutex_release(&(r->lock));
+  }
+
+  if (lock) {
+    ink_rwlock_unlock(&g_records_rwlock);
+  }
+
+  return err;
+}
+
 
 //-------------------------------------------------------------------------
 // RecRegisterStat

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a582707b/proxy/http/HttpConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index 493369c..2f7d66b 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -175,11 +175,22 @@ http_config_share_server_sessions_bc(HttpConfigParams *c, MgmtByte v)
   }
 }
 
+static bool
+http_config_is_set_by_admin(char const *name)
+{
+  RecSourceT vs;
+  return REC_ERR_OKAY == RecGetRecordSource(name, &vs) && vs != REC_SOURCE_DEFAULT && vs != REC_SOURCE_NULL;
+}
+
 static void
 http_config_share_server_sessions_read_bc(HttpConfigParams *c)
 {
   MgmtByte v;
-  if (REC_ERR_OKAY == RecGetRecordByte("proxy.config.http.share_server_sessions", &v))
+  // We use the old value only if it's set and neither of the new ones are set.
+  if (http_config_is_set_by_admin("proxy.config.http.share_server_sessions") &&
+      REC_ERR_OKAY == RecGetRecordByte("proxy.config.http.share_server_sessions", &v) &&
+      !http_config_is_set_by_admin("proxy.config.http.server_session_sharing.pool") &&
+      !http_config_is_set_by_admin("proxy.config.http.server_session_sharing.match"))
     http_config_share_server_sessions_bc(c, v);
 }
 
@@ -192,7 +203,7 @@ http_server_session_sharing_cb(char const *name, RecDataT dtype, RecData data, v
   bool valid_p = true;
   HttpConfigParams *c = static_cast<HttpConfigParams *>(cookie);
 
-  if (0 == strcasecmp("proxy.config.http.server_session_sharing.pool", name)) {
+  if (0 == strcasecmp("proxy.config.http.server_session_sharing.match", name)) {
     MgmtByte &match = c->oride.server_session_sharing_match;
     if (RECD_INT == dtype) {
       match = static_cast<TSServerSessionSharingMatchType>(data.rec_int);
@@ -201,7 +212,7 @@ http_server_session_sharing_cb(char const *name, RecDataT dtype, RecData data, v
     } else {
       valid_p = false;
     }
-  } else if (0 == strcasecmp("proxy.config.http.server_session_sharing.match", name)) {
+  } else if (0 == strcasecmp("proxy.config.http.server_session_sharing.pool", name)) {
     MgmtByte &match = c->oride.server_session_sharing_pool;
     if (RECD_INT == dtype) {
       match = static_cast<TSServerSessionSharingPoolType>(data.rec_int);
@@ -932,11 +943,6 @@ HttpConfig::startup()
   HttpEstablishStaticConfigByte(c.oride.post_check_content_length_enabled, "proxy.config.http.post.check.content_length.enabled");
   // HttpEstablishStaticConfigByte(c.oride.share_server_sessions, "proxy.config.http.share_server_sessions");
 
-  // 4.2 Backwards compatibility
-  RecRegisterConfigUpdateCb("proxy.config.http.share_server_sessions", &http_server_session_sharing_cb, &c);
-  http_config_share_server_sessions_read_bc(&c);
-  // end 4.2 BC
-
   // [amc] This is a bit of a mess, need to figure out to make this cleaner.
   RecRegisterConfigUpdateCb("proxy.config.http.server_session_sharing.pool", &http_server_session_sharing_cb, &c);
   http_config_enum_read("proxy.config.http.server_session_sharing.pool", SessionSharingPoolStrings,
@@ -945,6 +951,11 @@ HttpConfig::startup()
   http_config_enum_read("proxy.config.http.server_session_sharing.match", SessionSharingMatchStrings,
                         c.oride.server_session_sharing_match);
 
+  // 4.2 Backwards compatibility
+  RecRegisterConfigUpdateCb("proxy.config.http.share_server_sessions", &http_server_session_sharing_cb, &c);
+  http_config_share_server_sessions_read_bc(&c);
+  // end 4.2 BC
+
   HttpEstablishStaticConfigByte(c.oride.auth_server_session_private, "proxy.config.http.auth_server_session_private");
 
   HttpEstablishStaticConfigByte(c.oride.keep_alive_post_out, "proxy.config.http.keep_alive_post_out");