Repository: trafficserver Updated Branches: refs/heads/master 74d8bb483 -> e6a142762
[TS-4160] add more diagnostics info and reset CachedReq since it is destroyed in tunnel_handler_cache_read() Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e6a14276 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e6a14276 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e6a14276 Branch: refs/heads/master Commit: e6a142762e926632301309233270bbb1ac6ba07a Parents: 74d8bb4 Author: Sudheer Vinukonda <[email protected]> Authored: Mon Feb 1 18:15:17 2016 +0000 Committer: Sudheer Vinukonda <[email protected]> Committed: Mon Feb 1 18:15:17 2016 +0000 ---------------------------------------------------------------------- lib/atscppapi/src/Transaction.cc | 28 +++++++++++++------- .../src/include/atscppapi/Transaction.h | 10 +++---- lib/atscppapi/src/include/utils_internal.h | 20 +++++++------- lib/atscppapi/src/utils_internal.cc | 16 +++++------ 4 files changed, 41 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e6a14276/lib/atscppapi/src/Transaction.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Transaction.cc b/lib/atscppapi/src/Transaction.cc index 1f7cd22..332ba58 100644 --- a/lib/atscppapi/src/Transaction.cc +++ b/lib/atscppapi/src/Transaction.cc @@ -428,49 +428,57 @@ private: } // anonymous namespace void -Transaction::initServerRequest() +Transaction::initServerRequest(TSEvent event) { static initializeHandles initializeServerRequestHandles(TSHttpTxnServerReqGet); initializeServerRequestHandles(state_->txn_, state_->server_request_hdr_buf_, state_->server_request_hdr_loc_, "server request"); - LOG_DEBUG("Initializing server request"); + LOG_DEBUG("Initializing server request, event %d", event); state_->server_request_.init(state_->server_request_hdr_buf_, state_->server_request_hdr_loc_); } void -Transaction::initServerResponse() +Transaction::initServerResponse(TSEvent event) { static initializeHandles initializeServerResponseHandles(TSHttpTxnServerRespGet); initializeServerResponseHandles(state_->txn_, state_->server_response_hdr_buf_, state_->server_response_hdr_loc_, "server response"); - LOG_DEBUG("Initializing server response"); + LOG_DEBUG("Initializing server response, event %d", event); state_->server_response_.init(state_->server_response_hdr_buf_, state_->server_response_hdr_loc_); } void -Transaction::initClientResponse() +Transaction::initClientResponse(TSEvent event) { static initializeHandles initializeClientResponseHandles(TSHttpTxnClientRespGet); initializeClientResponseHandles(state_->txn_, state_->client_response_hdr_buf_, state_->client_response_hdr_loc_, "client response"); - LOG_DEBUG("Initializing client response"); + LOG_DEBUG("Initializing client response, event %d", event); state_->client_response_.init(state_->client_response_hdr_buf_, state_->client_response_hdr_loc_); } void -Transaction::initCachedRequest() +Transaction::initCachedRequest(TSEvent event) { static initializeHandles initializeCachedRequestHandles(TSHttpTxnCachedReqGet); + + if (event == TS_EVENT_HTTP_TXN_CLOSE) { + // CachedRequest is destroyed in tunnel_handler_cache_read + state_->cached_request_.reset(); + LOG_DEBUG("Reset cached request, event %d", event); + return; + } + initializeCachedRequestHandles(state_->txn_, state_->cached_request_hdr_buf_, state_->cached_request_hdr_loc_, "cached request"); - LOG_DEBUG("Initializing cached request"); + LOG_DEBUG("Initializing cached request, event %d", event); state_->cached_request_.init(state_->cached_request_hdr_buf_, state_->cached_request_hdr_loc_); } void -Transaction::initCachedResponse() +Transaction::initCachedResponse(TSEvent event) { static initializeHandles initializeCachedResponseHandles(TSHttpTxnCachedRespGet); initializeCachedResponseHandles(state_->txn_, state_->cached_response_hdr_buf_, state_->cached_response_hdr_loc_, "cached response"); - LOG_DEBUG("Initializing cached response"); + LOG_DEBUG("Initializing cached response, event %d", event); state_->cached_response_.init(state_->cached_response_hdr_buf_, state_->cached_response_hdr_loc_); } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e6a14276/lib/atscppapi/src/include/atscppapi/Transaction.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/atscppapi/Transaction.h b/lib/atscppapi/src/include/atscppapi/Transaction.h index 02b3397..42b980d 100644 --- a/lib/atscppapi/src/include/atscppapi/Transaction.h +++ b/lib/atscppapi/src/include/atscppapi/Transaction.h @@ -367,21 +367,21 @@ private: * * @private */ - void initServerRequest(); + void initServerRequest(TSEvent event); /** * Used to initialize the Response object for the Server. * * @private */ - void initServerResponse(); + void initServerResponse(TSEvent event); /** * Used to initialize the Response object for the Client. * * @private */ - void initClientResponse(); + void initClientResponse(TSEvent event); /** * Used to initialize the Request object for the cache. @@ -389,7 +389,7 @@ private: * @private */ - void initCachedRequest(); + void initCachedRequest(TSEvent event); /** * Used to initialize the Response object for the cache. @@ -397,7 +397,7 @@ private: * @private */ - void initCachedResponse(); + void initCachedResponse(TSEvent event); /** * Returns a list of TransactionPlugin pointers bound to the current Transaction http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e6a14276/lib/atscppapi/src/include/utils_internal.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/utils_internal.h b/lib/atscppapi/src/include/utils_internal.h index e9dc504..e4b0c68 100644 --- a/lib/atscppapi/src/include/utils_internal.h +++ b/lib/atscppapi/src/include/utils_internal.h @@ -72,33 +72,33 @@ namespace utils } static void - initTransactionServerRequest(Transaction &transaction) + initTransactionServerRequest(Transaction &transaction, TSEvent event) { - transaction.initServerRequest(); + transaction.initServerRequest(event); } static void - initTransactionServerResponse(Transaction &transaction) + initTransactionServerResponse(Transaction &transaction, TSEvent event) { - transaction.initServerResponse(); + transaction.initServerResponse(event); } static void - initTransactionClientResponse(Transaction &transaction) + initTransactionClientResponse(Transaction &transaction, TSEvent event) { - transaction.initClientResponse(); + transaction.initClientResponse(event); } static void - initTransactionCachedRequest(Transaction &transaction) + initTransactionCachedRequest(Transaction &transaction, TSEvent event) { - transaction.initCachedRequest(); + transaction.initCachedRequest(event); } static void - initTransactionCachedResponse(Transaction &transaction) + initTransactionCachedResponse(Transaction &transaction, TSEvent event) { - transaction.initCachedResponse(); + transaction.initCachedResponse(event); } static const std::list<TransactionPlugin *> & http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e6a14276/lib/atscppapi/src/utils_internal.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/utils_internal.cc b/lib/atscppapi/src/utils_internal.cc index dd7bca4..82a5065 100644 --- a/lib/atscppapi/src/utils_internal.cc +++ b/lib/atscppapi/src/utils_internal.cc @@ -44,13 +44,13 @@ const int MAX_TXN_ARG = 15; const int TRANSACTION_STORAGE_INDEX = MAX_TXN_ARG; void -initTransactionHandles(Transaction &transaction) +initTransactionHandles(Transaction &transaction, TSEvent event) { - utils::internal::initTransactionCachedRequest(transaction); - utils::internal::initTransactionCachedResponse(transaction); - utils::internal::initTransactionServerRequest(transaction); - utils::internal::initTransactionServerResponse(transaction); - utils::internal::initTransactionClientResponse(transaction); + utils::internal::initTransactionCachedRequest(transaction, event); + utils::internal::initTransactionCachedResponse(transaction, event); + utils::internal::initTransactionServerRequest(transaction, event); + utils::internal::initTransactionServerResponse(transaction, event); + utils::internal::initTransactionClientResponse(transaction, event); return; } @@ -77,10 +77,10 @@ handleTransactionEvents(TSCont cont, TSEvent event, void *edata) case TS_EVENT_HTTP_SEND_RESPONSE_HDR: case TS_EVENT_HTTP_READ_CACHE_HDR: // the buffer handles may be destroyed in the core during redirect follow - initTransactionHandles(transaction); + initTransactionHandles(transaction, event); break; case TS_EVENT_HTTP_TXN_CLOSE: { // opening scope to declare plugins variable below - initTransactionHandles(transaction); + initTransactionHandles(transaction, event); const std::list<TransactionPlugin *> &plugins = utils::internal::getTransactionPlugins(transaction); for (std::list<TransactionPlugin *>::const_iterator iter = plugins.begin(), end = plugins.end(); iter != end; ++iter) { shared_ptr<Mutex> trans_mutex = utils::internal::getTransactionPluginMutex(**iter);
