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");