You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by br...@apache.org on 2014/03/11 19:05:28 UTC

[1/2] git commit: Locking fix in atscppapi transformation code

Repository: trafficserver
Updated Branches:
  refs/heads/master 2b35ff4b2 -> 47a53bec1


Locking fix in atscppapi transformation code


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/8176151b
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/8176151b
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/8176151b

Branch: refs/heads/master
Commit: 8176151bf70bbcd480b3f6c0f37f774222fafd16
Parents: 6ad6e5a
Author: Brian Geffon <br...@apache.org>
Authored: Tue Mar 11 11:04:45 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Tue Mar 11 11:04:45 2014 -0700

----------------------------------------------------------------------
 lib/atscppapi/src/TransformationPlugin.cc    | 27 ++++++++++++++---------
 lib/atscppapi/src/include/atscppapi/Logger.h | 11 +++++++++
 2 files changed, 27 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8176151b/lib/atscppapi/src/TransformationPlugin.cc
----------------------------------------------------------------------
diff --git a/lib/atscppapi/src/TransformationPlugin.cc b/lib/atscppapi/src/TransformationPlugin.cc
index f859bb3..a3a8691 100644
--- a/lib/atscppapi/src/TransformationPlugin.cc
+++ b/lib/atscppapi/src/TransformationPlugin.cc
@@ -131,7 +131,8 @@ int handleTransformationPluginRead(TSCont contp, TransformationPluginState *stat
 
         /* Now call the client to tell them about data */
         if (in_data.length() > 0) {
-           state->transformation_plugin_.consume(in_data);
+          ScopedSharedMutexLock scopedLock(state->transformation_plugin_.getMutex());
+          state->transformation_plugin_.consume(in_data);
         }
       }
 
@@ -154,11 +155,12 @@ int handleTransformationPluginRead(TSCont contp, TransformationPluginState *stat
 
         /* Call back the write VIO continuation to let it know that we have completed the write operation. */
         if (!state->input_complete_dispatched_) {
-         state->transformation_plugin_.handleInputComplete();
-         state->input_complete_dispatched_ = true;
-         if (vio_cont) {
-           TSContCall(vio_cont, static_cast<TSEvent>(TS_EVENT_VCONN_WRITE_COMPLETE), write_vio);
-         }
+          ScopedSharedMutexLock scopedLock(state->transformation_plugin_.getMutex());
+          state->transformation_plugin_.handleInputComplete();
+          state->input_complete_dispatched_ = true;
+          if (vio_cont) {
+            TSContCall(vio_cont, static_cast<TSEvent>(TS_EVENT_VCONN_WRITE_COMPLETE), write_vio);
+          }
         }
       }
     } else {
@@ -167,11 +169,12 @@ int handleTransformationPluginRead(TSCont contp, TransformationPluginState *stat
 
       /* Call back the write VIO continuation to let it know that we have completed the write operation. */
       if (!state->input_complete_dispatched_) {
-       state->transformation_plugin_.handleInputComplete();
-       state->input_complete_dispatched_ = true;
-       if (vio_cont) {
-         TSContCall(vio_cont, static_cast<TSEvent>(TS_EVENT_VCONN_WRITE_COMPLETE), write_vio);
-       }
+        ScopedSharedMutexLock scopedLock(state->transformation_plugin_.getMutex());
+        state->transformation_plugin_.handleInputComplete();
+        state->input_complete_dispatched_ = true;
+        if (vio_cont) {
+          TSContCall(vio_cont, static_cast<TSEvent>(TS_EVENT_VCONN_WRITE_COMPLETE), write_vio);
+        }
       }
     }
   } else {
@@ -233,6 +236,7 @@ TransformationPlugin::~TransformationPlugin() {
 }
 
 size_t TransformationPlugin::produce(const std::string &data) {
+  ScopedSharedMutexLock scopedLock(state_->transformation_plugin_.getMutex());
   LOG_DEBUG("TransformationPlugin=%p tshttptxn=%p producing output with length=%ld", this, state_->txn_, data.length());
   int64_t write_length = static_cast<int64_t>(data.length());
   if (!write_length) {
@@ -282,6 +286,7 @@ size_t TransformationPlugin::produce(const std::string &data) {
 }
 
 size_t TransformationPlugin::setOutputComplete() {
+  ScopedSharedMutexLock scopedLock(state_->transformation_plugin_.getMutex());
   int connection_closed = TSVConnClosedGet(state_->vconn_);
   LOG_DEBUG("OutputComplete TransformationPlugin=%p tshttptxn=%p vconn=%p connection_closed=%d, total bytes written=%" PRId64, this, state_->txn_, state_->vconn_, connection_closed,state_->bytes_written_);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8176151b/lib/atscppapi/src/include/atscppapi/Logger.h
----------------------------------------------------------------------
diff --git a/lib/atscppapi/src/include/atscppapi/Logger.h b/lib/atscppapi/src/include/atscppapi/Logger.h
index f5227d0..3227b63 100644
--- a/lib/atscppapi/src/include/atscppapi/Logger.h
+++ b/lib/atscppapi/src/include/atscppapi/Logger.h
@@ -125,6 +125,17 @@ extern "C" void TSError(const char *fmt, ...) ATSCPPAPI_PRINTFLIKE(1,2);
     TSError("[%s] [%s:%d, %s()] " fmt, tag, __FILE__, __LINE__, __FUNCTION__, ## __VA_ARGS__); \
   } while (false)
 
+/**
+ * A helper macro for Logger objects that allows you to easily add a error level message
+ * which will include file, line, and function name with the message. This macro will also
+ * use invoke TS_DEBUG
+ */
+#define LOG_ERROR2(log, log_tag, fmt, ...)       \
+  do { \
+    (log).logError("[%s:%d, %s()] " fmt, __FILE__, __LINE__, __FUNCTION__, ## __VA_ARGS__); \
+    TS_DEBUG((log_tag), fmt, ## __VA_ARGS__);                           \
+  } while (false)
+
 namespace atscppapi {
 
 struct LoggerState;


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/trafficserver

Posted by br...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/trafficserver


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/47a53bec
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/47a53bec
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/47a53bec

Branch: refs/heads/master
Commit: 47a53bec100da61c0308a78c35d90e9fbac7f7a9
Parents: 8176151 2b35ff4
Author: Brian Geffon <br...@apache.org>
Authored: Tue Mar 11 11:05:16 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Tue Mar 11 11:05:16 2014 -0700

----------------------------------------------------------------------
 ci/tsqa/test-log-configuration | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------