TS-1255 Added buffer size configurations to overridable
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/2f984695 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/2f984695 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/2f984695 Branch: refs/heads/3.3.x Commit: 2f98469585cd0368232cd90f7acd8a90dbb7bff6 Parents: cc0b06a Author: Leif Hedstrom <[email protected]> Authored: Sun Jul 28 21:57:39 2013 +0200 Committer: Leif Hedstrom <[email protected]> Committed: Thu Aug 1 22:42:48 2013 +0200 ---------------------------------------------------------------------- proxy/InkAPI.cc | 14 ++++++++++++++ proxy/InkAPITest.cc | 4 +++- proxy/api/ts/ts.h.in | 2 ++ proxy/http/HttpConfig.cc | 12 +++++------- proxy/http/HttpConfig.h | 8 ++++---- proxy/http/HttpSM.cc | 10 +++++----- 6 files changed, 33 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/InkAPI.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc index 7c2f20f..1ed9933 100644 --- a/proxy/InkAPI.cc +++ b/proxy/InkAPI.cc @@ -7569,6 +7569,14 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->normalize_ae_gzip; break; + case TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE: + typ = OVERRIDABLE_TYPE_INT; + ret = &sm->t_state.txn_conf->default_buffer_size_index; + break; + case TS_CONFIG_HTTP_DEFAULT_BUFFER_WATER_MARK: + typ = OVERRIDABLE_TYPE_INT; + ret = &sm->t_state.txn_conf->default_buffer_water_mark; + break; // This helps avoiding compiler warnings, yet detect unhandled enum members. case TS_CONFIG_NULL: @@ -7793,6 +7801,8 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, cnf = TS_CONFIG_HTTP_CACHE_MAX_STALE_AGE; else if (!strncmp(name, "proxy.config.http.cache.fuzz.min_time", length)) cnf = TS_CONFIG_HTTP_CACHE_FUZZ_MIN_TIME; + else if (!strncmp(name, "proxy.config.http.default_buffer_size", length)) + cnf = TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE; break; case 'r': if (!strncmp(name, "proxy.config.http.response_server_str", length)) { @@ -7929,6 +7939,10 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, if (!strncmp(name, "proxy.config.http.negative_caching_lifetime", length)) cnf = TS_CONFIG_HTTP_NEGATIVE_CACHING_LIFETIME; break; + case 'k': + if (!strncmp(name, "proxy.config.http.default_buffer_water_mark", length)) + cnf = TS_CONFIG_HTTP_DEFAULT_BUFFER_WATER_MARK; + break; case 'l': if (!strncmp(name, "proxy.config.http.cache.cluster_cache_local", length)) cnf = TS_CONFIG_HTTP_CACHE_CLUSTER_CACHE_LOCAL; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/InkAPITest.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc index c33ab2b..42de90c 100644 --- a/proxy/InkAPITest.cc +++ b/proxy/InkAPITest.cc @@ -7397,7 +7397,9 @@ const char *SDK_Overridable_Configs[TS_CONFIG_LAST_ENTRY] = { "proxy.config.http.flow_control.low_water", "proxy.config.http.flow_control.high_water", "proxy.config.http.cache.range.lookup", - "proxy.config.http.normalize_ae_gzip" + "proxy.config.http.normalize_ae_gzip", + "proxy.config.http.default_buffer_size", + "proxy.config.http.default_buffer_water_mark" }; REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int /* atype ATS_UNUSED */, int *pstatus) http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/api/ts/ts.h.in ---------------------------------------------------------------------- diff --git a/proxy/api/ts/ts.h.in b/proxy/api/ts/ts.h.in index e72b1c5..b9cd558 100644 --- a/proxy/api/ts/ts.h.in +++ b/proxy/api/ts/ts.h.in @@ -673,6 +673,8 @@ extern "C" TS_CONFIG_HTTP_FLOW_CONTROL_HIGH_WATER_MARK, TS_CONFIG_HTTP_CACHE_RANGE_LOOKUP, TS_CONFIG_HTTP_NORMALIZE_AE_GZIP, + TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE, + TS_CONFIG_HTTP_DEFAULT_BUFFER_WATER_MARK, TS_CONFIG_LAST_ENTRY, } TSOverridableConfigKey; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/http/HttpConfig.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc index 02b7704..b4db289 100644 --- a/proxy/http/HttpConfig.cc +++ b/proxy/http/HttpConfig.cc @@ -1329,11 +1329,9 @@ HttpConfig::startup() HttpEstablishStaticConfigByte(c.oride.negative_caching_enabled, "proxy.config.http.negative_caching_enabled"); HttpEstablishStaticConfigLongLong(c.oride.negative_caching_lifetime, "proxy.config.http.negative_caching_lifetime"); - // Buffer size - HttpEstablishStaticConfigLongLong(c.default_buffer_size_index, "proxy.config.http.default_buffer_size"); - - // Buffer water mark - HttpEstablishStaticConfigLongLong(c.default_buffer_water_mark, "proxy.config.http.default_buffer_water_mark"); + // Buffer size and watermark + HttpEstablishStaticConfigLongLong(c.oride.default_buffer_size_index, "proxy.config.http.default_buffer_size"); + HttpEstablishStaticConfigLongLong(c.oride.default_buffer_water_mark, "proxy.config.http.default_buffer_water_mark"); // Stat Page Info HttpEstablishStaticConfigByte(c.enable_http_info, "proxy.config.http.enable_http_info"); @@ -1575,8 +1573,8 @@ HttpConfig::reconfigure() params->record_tcp_mem_hit = INT_TO_BOOL(m_master.record_tcp_mem_hit); params->oride.send_http11_requests = m_master.oride.send_http11_requests; params->oride.doc_in_cache_skip_dns = INT_TO_BOOL(m_master.oride.doc_in_cache_skip_dns); - params->default_buffer_size_index = m_master.default_buffer_size_index; - params->default_buffer_water_mark = m_master.default_buffer_water_mark; + params->oride.default_buffer_size_index = m_master.oride.default_buffer_size_index; + params->oride.default_buffer_water_mark = m_master.oride.default_buffer_water_mark; params->enable_http_info = INT_TO_BOOL(m_master.enable_http_info); params->reverse_proxy_no_host_redirect = ats_strdup(m_master.reverse_proxy_no_host_redirect); params->reverse_proxy_no_host_redirect_len = http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/http/HttpConfig.h ---------------------------------------------------------------------- diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h index bfbe29b..27a96e7 100644 --- a/proxy/http/HttpConfig.h +++ b/proxy/http/HttpConfig.h @@ -425,6 +425,7 @@ struct OverridableHttpConfigParams { freshness_fuzz_time(240), freshness_fuzz_min_time(0), max_cache_open_read_retries(-1), cache_open_read_retry_time(10), background_fill_active_timeout(60), http_chunking_size(4096), flow_high_water_mark(0), flow_low_water_mark(0), + default_buffer_size_index(8), default_buffer_water_mark(32768), // Strings / floats must come last proxy_response_server_string(NULL), proxy_response_server_string_len(0), @@ -570,6 +571,9 @@ struct OverridableHttpConfigParams { MgmtInt flow_high_water_mark; ///< Flow control high water mark. MgmtInt flow_low_water_mark; ///< Flow control low water mark. + MgmtInt default_buffer_size_index; + MgmtInt default_buffer_water_mark; + // IMPORTANT: Here comes all strings / floats configs. /////////////////////////////////////////////////////////////////// @@ -758,8 +762,6 @@ public: MgmtByte errors_log_error_pages; MgmtInt slow_log_threshold; - MgmtInt default_buffer_size_index; - MgmtInt default_buffer_water_mark; MgmtByte enable_http_info; // Cluster time delta is not a config variable, @@ -936,8 +938,6 @@ HttpConfigParams::HttpConfigParams() record_cop_page(0), record_tcp_mem_hit(0), errors_log_error_pages(1), - default_buffer_size_index(8), - default_buffer_water_mark(32768), enable_http_info(0), cluster_time_delta(0), redirection_enabled(1), http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f984695/proxy/http/HttpSM.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc index 51f8a66..5647f22 100644 --- a/proxy/http/HttpSM.cc +++ b/proxy/http/HttpSM.cc @@ -5202,7 +5202,7 @@ HttpSM::do_setup_post_tunnel(HttpVC_t to_vc_type) int64_t alloc_index; // content length is undefined, use default buffer size if (t_state.hdr_info.request_content_length == HTTP_UNDEFINED_CL) { - alloc_index = (int) t_state.http_config_param->default_buffer_size_index; + alloc_index = (int) t_state.txn_conf->default_buffer_size_index; if (alloc_index<MIN_CONFIG_BUFFER_SIZE_INDEX || alloc_index> MAX_BUFFER_SIZE_INDEX) { alloc_index = DEFAULT_REQUEST_BUFFER_SIZE_INDEX; } @@ -5639,7 +5639,7 @@ HttpSM::setup_cache_read_transfer() buf->append_block(HTTP_HEADER_BUFFER_SIZE_INDEX); #endif - buf->water_mark = (int) t_state.http_config_param->default_buffer_water_mark; + buf->water_mark = (int) t_state.txn_conf->default_buffer_water_mark; IOBufferReader *buf_start = buf->alloc_reader(); @@ -5884,7 +5884,7 @@ HttpSM::find_http_resp_buffer_size(int64_t content_length) if (content_length == HTTP_UNDEFINED_CL) { // Try use our configured default size. Otherwise pick // the default size - alloc_index = (int) t_state.http_config_param->default_buffer_size_index; + alloc_index = (int) t_state.txn_conf->default_buffer_size_index; if (alloc_index<MIN_CONFIG_BUFFER_SIZE_INDEX || alloc_index> DEFAULT_MAX_BUFFER_SIZE) { alloc_index = DEFAULT_RESPONSE_BUFFER_SIZE_INDEX; } @@ -6002,7 +6002,7 @@ HttpSM::setup_transfer_from_transform() // TODO change this call to new_empty_MIOBuffer() MIOBuffer *buf = new_MIOBuffer(alloc_index); - buf->water_mark = (int) t_state.http_config_param->default_buffer_water_mark; + buf->water_mark = (int) t_state.txn_conf->default_buffer_water_mark; IOBufferReader *buf_start = buf->alloc_reader(); HttpTunnelConsumer *c = tunnel.get_consumer(transform_info.vc); @@ -6117,7 +6117,7 @@ HttpSM::setup_server_transfer() MIOBuffer *buf = new_empty_MIOBuffer(alloc_index); buf->append_block(HTTP_HEADER_BUFFER_SIZE_INDEX); #endif - buf->water_mark = (int) t_state.http_config_param->default_buffer_water_mark; + buf->water_mark = (int) t_state.txn_conf->default_buffer_water_mark; IOBufferReader *buf_start = buf->alloc_reader(); // we need to know if we are going to chunk the response or not
