----- Original Message ----- > Updated Branches: > refs/heads/master 2e8f0c352 -> e5d27294b > > > TS-2107: change proxy.config.http.transaction_active_timeout_in > > split proxy.config.http.transaction_active_timeout_in to > proxy.config.http.transaction_header_timeout_in > and proxy.config.http.transaction_request_timeout_in.
doc/reference/configuration/records.config.en.rst 644:.. ts:cv:: CONFIG proxy.config.http.transaction_active_timeout_in INT 0 lib/perl/examples/forw_proxy_conf.pl 36:$recedit->set(conf => "proxy.config.http.transaction_active_timeout_in", val => "1800"); lib/perl/lib/Apache/TS/AdminClient.pm 517: proxy.config.http.transaction_active_timeout_in > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e5d27294 > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e5d27294 > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e5d27294 > > Branch: refs/heads/master > Commit: e5d27294be996520588825bad8c82788e15dde85 > Parents: 2e8f0c3 > Author: Chen Bin <[email protected]> > Authored: Thu Aug 22 13:47:30 2013 +0800 > Committer: Chen Bin <[email protected]> > Committed: Thu Aug 22 13:49:39 2013 +0800 > > ---------------------------------------------------------------------- > CHANGES | 3 +++ > mgmt/RecordsConfig.cc | 4 +++- > mgmt/cli/ConfigCmd.cc | 9 +++++---- > mgmt/cli/ConfigCmd.h | 3 ++- > mgmt/cli/ShowCmd.cc | 9 ++++++--- > mgmt/cli/cli_detailed_command_list.txt | 6 ++++-- > proxy/http/HttpConfig.cc | 8 ++++++-- > proxy/http/HttpConfig.h | 9 +++++++-- > proxy/http/HttpSM.cc | 27 +++++++++++++++++++++++++-- > 9 files changed, 61 insertions(+), 17 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/CHANGES > ---------------------------------------------------------------------- > diff --git a/CHANGES b/CHANGES > index c2e5d1b..cadbb34 100644 > --- a/CHANGES > +++ b/CHANGES > @@ -2,6 +2,9 @@ > Changes with Apache Traffic Server 4.1.0 > > > + *) [TS-2107] split proxy.config.http.transaction_active_timeout_in to > proxy.config.http.transaction_header_timeout_in > + and proxy.config.http.transaction_request_timeout_in. > + > *) [TS-2114] buffer_upload plugin defines true and false > Author: Kit Chan <[email protected]> > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/RecordsConfig.cc > ---------------------------------------------------------------------- > diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc > index 11f60c7..8e90ac1 100644 > --- a/mgmt/RecordsConfig.cc > +++ b/mgmt/RecordsConfig.cc > @@ -506,7 +506,9 @@ RecordElement RecordsConfig[] = { > , > {RECT_CONFIG, "proxy.config.http.transaction_no_activity_timeout_out", > RECD_INT, "30", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL} > , > - {RECT_CONFIG, "proxy.config.http.transaction_active_timeout_in", RECD_INT, > "900", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL} > + {RECT_CONFIG, "proxy.config.http.transaction_header_active_timeout_in", > RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL} > + , > + {RECT_CONFIG, "proxy.config.http.transaction_request_active_timeout_in", > RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL} > , > {RECT_CONFIG, "proxy.config.http.transaction_active_timeout_out", > RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL} > , > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.cc > ---------------------------------------------------------------------- > diff --git a/mgmt/cli/ConfigCmd.cc b/mgmt/cli/ConfigCmd.cc > index a40da20..ae7a5c5 100644 > --- a/mgmt/cli/ConfigCmd.cc > +++ b/mgmt/cli/ConfigCmd.cc > @@ -978,8 +978,11 @@ Cmd_ConfigHttp(ClientData clientData, Tcl_Interp * > interp, int argc, const char > case CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT: > return (Cli_RecordInt_Action(action, > "proxy.config.http.transaction_no_activity_timeout_out", > argtable->arg_int)); > > - case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN: > - return (Cli_RecordInt_Action(action, > "proxy.config.http.transaction_active_timeout_in", argtable->arg_int)); > + case CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN: > + return (Cli_RecordInt_Action(action, > "proxy.config.http.transaction_header_active_timeout_in", > argtable->arg_int)); > + > + case CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN: > + return (Cli_RecordInt_Action(action, > "proxy.config.http.transaction_request_active_timeout_in", > argtable->arg_int)); > > case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT: > return (Cli_RecordInt_Action(action, > "proxy.config.http.transaction_active_timeout_out", > argtable->arg_int)); > @@ -1039,8 +1042,6 @@ CmdArgs_ConfigHttp() > createArgument("inactive-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE, > (char *) NULL, CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT, > "Inactive timeout outbound <seconds>", > (char *) NULL); > - createArgument("active-timeout-in", 1, CLI_ARGV_OPTION_INT_VALUE, > - (char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN, "Active > timeout inbound <seconds>", (char *) NULL); > createArgument("active-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE, > (char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT, "Active > timeout outbound <seconds>", (char *) NULL); > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.h > ---------------------------------------------------------------------- > diff --git a/mgmt/cli/ConfigCmd.h b/mgmt/cli/ConfigCmd.h > index 42ed681..05473c4 100644 > --- a/mgmt/cli/ConfigCmd.h > +++ b/mgmt/cli/ConfigCmd.h > @@ -113,7 +113,8 @@ typedef enum > CMD_CONFIG_HTTP_KEEP_ALIVE_TIMEOUT_OUT, > CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_IN, > CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT, > - CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN, > + CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN, > + CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN, > CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT, > CMD_CONFIG_HTTP_REMOVE_FROM, > CMD_CONFIG_HTTP_REMOVE_REFERER, > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ShowCmd.cc > ---------------------------------------------------------------------- > diff --git a/mgmt/cli/ShowCmd.cc b/mgmt/cli/ShowCmd.cc > index ed71560..138e8cb 100644 > --- a/mgmt/cli/ShowCmd.cc > +++ b/mgmt/cli/ShowCmd.cc > @@ -1155,7 +1155,8 @@ ShowHttp() > TSInt keepalive_timeout_out = -1; > TSInt inactivity_timeout_in = -1; > TSInt inactivity_timeout_out = -1; > - TSInt activity_timeout_in = -1; > + TSInt header_activity_timeout_in = -1; > + TSInt request_activity_timeout_in = -1; > TSInt activity_timeout_out = -1; > TSInt max_alts = -1; > TSInt remove_from = -1; > @@ -1176,7 +1177,8 @@ ShowHttp() > Cli_RecordGetInt("proxy.config.http.keep_alive_no_activity_timeout_out", > &keepalive_timeout_out); > Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_in", > &inactivity_timeout_in); > Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_out", > &inactivity_timeout_out); > - Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_in", > &activity_timeout_in); > + Cli_RecordGetInt("proxy.config.http.transaction_header_active_timeout_in", > &header_activity_timeout_in); > + > Cli_RecordGetInt("proxy.config.http.transaction_request_active_timeout_in", > &request_activity_timeout_in); > Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_out", > &activity_timeout_out); > Cli_RecordGetInt("proxy.config.cache.limits.http.max_alts", &max_alts); > Cli_RecordGetInt("proxy.config.http.anonymize_remove_from", &remove_from); > @@ -1199,7 +1201,8 @@ ShowHttp() > Cli_Printf("Keep-Alive Timeout Outbound --- %d s\n", > keepalive_timeout_out); > Cli_Printf("Inactivity Timeout Inbound ---- %d s\n", > inactivity_timeout_in); > Cli_Printf("Inactivity Timeout Outbound --- %d s\n", > inactivity_timeout_out); > - Cli_Printf("Activity Timeout Inbound ------ %d s\n", activity_timeout_in); > + Cli_Printf("Header Activity Timeout Inbound ------ %d s\n", > header_activity_timeout_in); > + Cli_Printf("Request Activity Timeout Inbound ------ %d s\n", > request_activity_timeout_in); > Cli_Printf("Activity Timeout Outbound ----- %d s\n", > activity_timeout_out); > Cli_Printf("Maximum Number of Alternates -- %d\n", max_alts); > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/cli_detailed_command_list.txt > ---------------------------------------------------------------------- > diff --git a/mgmt/cli/cli_detailed_command_list.txt > b/mgmt/cli/cli_detailed_command_list.txt > index 54b2776..670be8c 100644 > --- a/mgmt/cli/cli_detailed_command_list.txt > +++ b/mgmt/cli/cli_detailed_command_list.txt > @@ -362,7 +362,8 @@ http HTTP Configuration > Keep-Alive Timeout Outbound --- 10 s > (proxy.config.http.keep_alive_no_activity_timeout_out) > Inactivity Timeout Inbound ---- 120 s > (proxy.config.http.transaction_no_activity_timeout_in) > Inactivity Timeout Outbound --- 120 s > (proxy.config.http.transaction_no_activity_timeout_out) > - Activity Timeout Inbound ------ 7200 s > (proxy.config.http.transaction_active_timeout_in) > + Header Activity Timeout Inbound ------ 7200 s > (proxy.config.http.transaction_header_active_timeout_in) > + Request Activity Timeout Inbound ------ 7200 s > (proxy.config.http.transaction_request_active_timeout_in) > Activity Timeout Outbound ----- 7200 s > (proxy.config.http.transaction_active_timeout_out) > Maximum Number of Alternates -- 3 > (proxy.config.cache.limits.http.max_alts) > Remove the following common headers > @@ -965,7 +966,8 @@ http HTTP Configuration > keep-alive-timeout-out > (proxy.config.http.keep_alive_no_activity_timeout_out) > inactive-timeout-in > (proxy.config.http.transaction_no_activity_timeout_in) > inactive-timeout-out > (proxy.config.http.transaction_no_activity_timeout_out) > - active-timeout-in > (proxy.config.http.transaction_active_timeout_in) > + header-active-timeout-in > (proxy.config.http.transaction_header_active_timeout_in) > + request-active-timeout-in > (proxy.config.http.transaction_request_active_timeout_in) > active-timeout-out > (proxy.config.http.transaction_active_timeout_out) > > ts# config:http keep-alive-timeout-in 10 > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.cc > ---------------------------------------------------------------------- > diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc > index 461a9b7..14cbf1e 100644 > --- a/proxy/http/HttpConfig.cc > +++ b/proxy/http/HttpConfig.cc > @@ -1190,7 +1190,10 @@ HttpConfig::startup() > > "proxy.config.http.transaction_no_activity_timeout_in"); > > HttpEstablishStaticConfigLongLong(c.oride.transaction_no_activity_timeout_out, > > "proxy.config.http.transaction_no_activity_timeout_out"); > - HttpEstablishStaticConfigLongLong(c.transaction_active_timeout_in, > "proxy.config.http.transaction_active_timeout_in"); > + HttpEstablishStaticConfigLongLong(c.transaction_header_active_timeout_in, > "proxy.config.http.transaction_header_active_timeout_in"); > + HttpEstablishStaticConfigLongLong(c.transaction_request_active_timeout_in, > "proxy.config.http.transaction_request_active_timeout_in"); > + if (c.transaction_header_active_timeout_in >= > c.transaction_request_active_timeout_in) > + c.transaction_request_active_timeout_in = 0; > HttpEstablishStaticConfigLongLong(c.oride.transaction_active_timeout_out, > "proxy.config.http.transaction_active_timeout_out"); > HttpEstablishStaticConfigLongLong(c.accept_no_activity_timeout, > "proxy.config.http.accept_no_activity_timeout"); > > @@ -1461,7 +1464,8 @@ HttpConfig::reconfigure() > params->oride.keep_alive_no_activity_timeout_out = > m_master.oride.keep_alive_no_activity_timeout_out; > params->oride.transaction_no_activity_timeout_in = > m_master.oride.transaction_no_activity_timeout_in; > params->oride.transaction_no_activity_timeout_out = > m_master.oride.transaction_no_activity_timeout_out; > - params->transaction_active_timeout_in = > m_master.transaction_active_timeout_in; > + params->oride.transaction_header_active_timeout_in = > m_master.oride.transaction_header_active_timeout_in; > + params->oride.transaction_request_active_timeout_in = > m_master.oride.transaction_request_active_timeout_in; > params->oride.transaction_active_timeout_out = > m_master.oride.transaction_active_timeout_out; > params->accept_no_activity_timeout = m_master.accept_no_activity_timeout; > params->oride.background_fill_active_timeout = > m_master.oride.background_fill_active_timeout; > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.h > ---------------------------------------------------------------------- > diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h > index c220463..04e14cb 100644 > --- a/proxy/http/HttpConfig.h > +++ b/proxy/http/HttpConfig.h > @@ -420,6 +420,7 @@ struct OverridableHttpConfigParams { > cache_guaranteed_min_lifetime(0), > cache_guaranteed_max_lifetime(31536000), cache_max_stale_age(604800), > keep_alive_no_activity_timeout_in(115), > keep_alive_no_activity_timeout_out(120), > transaction_no_activity_timeout_in(30), > transaction_no_activity_timeout_out(30), > + transaction_header_active_timeout_in(0), > transaction_request_active_timeout_in(0), > transaction_active_timeout_out(0), origin_max_connections(0), > connect_attempts_max_retries(0), > connect_attempts_max_retries_dead_server(3), > connect_attempts_rr_retries(3), connect_attempts_timeout(30), > @@ -558,6 +559,8 @@ struct OverridableHttpConfigParams { > MgmtInt keep_alive_no_activity_timeout_out; > MgmtInt transaction_no_activity_timeout_in; > MgmtInt transaction_no_activity_timeout_out; > + MgmtInt transaction_header_active_timeout_in; > + MgmtInt transaction_request_active_timeout_in; > MgmtInt transaction_active_timeout_out; > MgmtInt origin_max_connections; > > @@ -669,7 +672,8 @@ public: > MgmtByte session_auth_cache_keep_alive_enabled; > MgmtInt origin_server_pipeline; > MgmtInt user_agent_pipeline; > - MgmtInt transaction_active_timeout_in; > + MgmtInt transaction_header_active_timeout_in; > + MgmtInt transaction_request_active_timeout_in; > MgmtInt accept_no_activity_timeout; > > //////////////////////////////////// > @@ -902,7 +906,8 @@ HttpConfigParams::HttpConfigParams() > session_auth_cache_keep_alive_enabled(1), > origin_server_pipeline(1), > user_agent_pipeline(8), > - transaction_active_timeout_in(900), > + transaction_header_active_timeout_in(0), > + transaction_request_active_timeout_in(0), > accept_no_activity_timeout(120), > parent_connect_attempts(4), > per_parent_connect_attempts(2), > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpSM.cc > ---------------------------------------------------------------------- > diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc > index ba460da..ad9cd4c 100644 > --- a/proxy/http/HttpSM.cc > +++ b/proxy/http/HttpSM.cc > @@ -636,8 +636,11 @@ HttpSM::attach_client_session(HttpClientSession * > client_vc, IOBufferReader * bu > // set up timeouts // > ///////////////////////// > > client_vc->get_netvc()->set_inactivity_timeout(HRTIME_SECONDS(HttpConfig::m_master.accept_no_activity_timeout)); > - > client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_active_timeout_in)); > - > + if (HttpConfig::m_master.transaction_header_active_timeout_in) > + > client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in)); > + else if (HttpConfig::m_master.transaction_request_active_timeout_in) > + > client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in)); > + > // Add our state sm to the sm list > state_add_to_list(EVENT_NONE, NULL); > } > @@ -758,6 +761,7 @@ HttpSM::state_read_client_request_header(int event, void > *data) > milestones.ua_read_header_done = ink_get_hrtime(); > } > > + int method; > switch (state) { > case PARSE_ERROR: > DebugSM("http", "[%" PRId64 "] error parsing client request header", > sm_id); > @@ -765,6 +769,7 @@ HttpSM::state_read_client_request_header(int event, void > *data) > // Disable further I/O on the client > ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone; > > + ua_session->get_netvc()->cancel_active_timeout(); > call_transact_and_set_next_state(HttpTransact::BadRequest); > break; > > @@ -776,6 +781,7 @@ HttpSM::state_read_client_request_header(int event, void > *data) > // Disable further I/O on the client > ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone; > > + ua_session->get_netvc()->cancel_active_timeout(); > call_transact_and_set_next_state(HttpTransact::BadRequest); > break; > } else if (event == VC_EVENT_READ_COMPLETE) { > @@ -819,6 +825,21 @@ HttpSM::state_read_client_request_header(int event, void > *data) > (t_state.method == HTTP_WKSIDX_POST && > HttpConfig::m_master.post_copy_size)) > enable_redirection = HttpConfig::m_master.redirection_enabled; > > + method = t_state.hdr_info.client_request.method_get_wksidx(); > + if ((method == HTTP_WKSIDX_POST || method == HTTP_WKSIDX_PUT || > (t_state.hdr_info.extension_method && > t_state.hdr_info.request_content_length > 0))) { > + // is setted > HttpConfig::m_master.transaction_header_active_timeout_in, so should reset > active_timeout_in > + if (ua_session->get_netvc()->get_active_timeout() == > HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in)) { > + if (HttpConfig::m_master.transaction_request_active_timeout_in) { > + if > (HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in) > > (milestones.ua_read_header_done - milestones.sm_start)) { > + > ua_session->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in) > - (milestones.ua_read_header_done - milestones.sm_start)); > + } > + } else { > + ua_session->get_netvc()->cancel_active_timeout(); > + } > + } > + } else { > + ua_session->get_netvc()->cancel_active_timeout(); > + } > call_transact_and_set_next_state(HttpTransact::ModifyRequest); > > break; > @@ -3268,6 +3289,7 @@ HttpSM::tunnel_handler_post_ua(int event, > HttpTunnelProducer * p) > case VC_EVENT_ACTIVE_TIMEOUT: > // Did not complete post tunnling. Abort the > // server and close the ua > + ua_session->get_netvc()->cancel_active_timeout(); > p->handler_state = HTTP_SM_POST_UA_FAIL; > tunnel.chain_abort_all(p); > p->read_vio = NULL; > @@ -3297,6 +3319,7 @@ HttpSM::tunnel_handler_post_ua(int event, > HttpTunnelProducer * p) > p->handler_state = HTTP_SM_POST_SUCCESS; > p->read_success = true; > ua_entry->in_tunnel = false; > + ua_session->get_netvc()->cancel_active_timeout(); > > if (p->do_dechunking || p->do_chunked_passthru) { > if (p->chunked_handler.truncation) { > > -- Igor Galić Tel: +43 (0) 664 886 22 883 Mail: [email protected] URL: http://brainsware.org/ GPG: 6880 4155 74BD FD7C B515 2EA5 4B1D 9E08 A097 C9AE
