You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by su...@apache.org on 2016/02/01 19:11:08 UTC

trafficserver git commit: [TS-4160] Add more diagnostic info and reset CachedReq since it is destroyed in tunnel_handler_cache_read()

Repository: trafficserver
Updated Branches:
  refs/heads/ts-4160_1 [created] 32e75adfb


[TS-4160] Add more diagnostic 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/32e75adf
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/32e75adf
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/32e75adf

Branch: refs/heads/ts-4160_1
Commit: 32e75adfb553c0e37f6a4640ee870715bc676592
Parents: 74d8bb4
Author: Sudheer Vinukonda <su...@yahoo-inc.com>
Authored: Mon Feb 1 18:10:21 2016 +0000
Committer: Sudheer Vinukonda <su...@yahoo-inc.com>
Committed: Mon Feb 1 18:10:21 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/32e75adf/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/32e75adf/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/32e75adf/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/32e75adf/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);