You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by dr...@apache.org on 2010/10/06 19:10:44 UTC

svn commit: r1005163 - in /incubator/thrift/trunk/lib/cpp/src: server/TNonblockingServer.cpp server/TNonblockingServer.h transport/TBufferTransports.h

Author: dreiss
Date: Wed Oct  6 17:10:43 2010
New Revision: 1005163

URL: http://svn.apache.org/viewvc?rev=1005163&view=rev
Log:
THRIFT-926. cpp: Revert r750153 to make way for more flexible version

r750153 caused TNonblockingServer to reset its buffers every 512 calls.
A more configurable version was developed internally, so I'm reverting
this rev first to avoid conflicts.

Modified:
    incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.cpp
    incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.h
    incubator/thrift/trunk/lib/cpp/src/transport/TBufferTransports.h

Modified: incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.cpp
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.cpp?rev=1005163&r1=1005162&r2=1005163&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.cpp (original)
+++ incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.cpp Wed Oct  6 17:10:43 2010
@@ -246,24 +246,8 @@ void TConnection::transition() {
   case APP_READ_REQUEST:
     // We are done reading the request, package the read buffer into transport
     // and get back some data from the dispatch function
-    // If we've used these transport buffers enough times, reset them to avoid bloating
-
     inputTransport_->resetBuffer(readBuffer_, readBufferPos_);
-    ++numReadsSinceReset_;
-    if (numWritesSinceReset_ < 512) {
-      outputTransport_->resetBuffer();
-    } else {
-      // reset the capacity of the output transport if we used it enough times that it might be bloated
-      try {
-        outputTransport_->resetBuffer(true);
-        numWritesSinceReset_ = 0;
-      } catch (TTransportException &ttx) {
-        GlobalOutput.printf("TTransportException: TMemoryBuffer::resetBuffer() %s", ttx.what());
-        close();
-        return;
-      }
-    }
-
+    outputTransport_->resetBuffer();
     // Prepend four bytes of blank space to the buffer so we can
     // write the frame size there later.
     outputTransport_->getWritePtr(4);
@@ -359,27 +343,11 @@ void TConnection::transition() {
 
   case APP_SEND_RESULT:
 
-    ++numWritesSinceReset_;
-
     // N.B.: We also intentionally fall through here into the INIT state!
 
   LABEL_APP_INIT:
   case APP_INIT:
 
-    // reset the input buffer if we used it enough times that it might be bloated
-    if (numReadsSinceReset_ > 512)
-    {
-      void * new_buffer = std::realloc(readBuffer_, 1024);
-      if (new_buffer == NULL) {
-        GlobalOutput("TConnection::transition() realloc");
-        close();
-        return;
-      }
-      readBuffer_ = (uint8_t*) new_buffer;
-      readBufferSize_ = 1024;
-      numReadsSinceReset_ = 0;
-    }
-
     // Clear write buffer variables
     writeBuffer_ = NULL;
     writeBufferPos_ = 0;

Modified: incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.h
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.h?rev=1005163&r1=1005162&r2=1005163&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.h (original)
+++ incubator/thrift/trunk/lib/cpp/src/server/TNonblockingServer.h Wed Oct  6 17:10:43 2010
@@ -626,12 +626,6 @@ enum TAppState {
   /// How far through writing are we?
   uint32_t writeBufferPos_;
 
-  /// How many times have we read since our last buffer reset?
-  uint32_t numReadsSinceReset_;
-
-  /// How many times have we written since our last buffer reset?
-  uint32_t numWritesSinceReset_;
-
   /// Task handle
   int taskHandle_;
 
@@ -706,9 +700,6 @@ enum TAppState {
     }
     readBufferSize_ = STARTING_CONNECTION_BUFFER_SIZE;
 
-    numReadsSinceReset_ = 0;
-    numWritesSinceReset_ = 0;
-
     // Allocate input and output tranpsorts
     // these only need to be allocated once per TConnection (they don't need to be
     // reallocated on init() call)

Modified: incubator/thrift/trunk/lib/cpp/src/transport/TBufferTransports.h
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/cpp/src/transport/TBufferTransports.h?rev=1005163&r1=1005162&r2=1005163&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/cpp/src/transport/TBufferTransports.h (original)
+++ incubator/thrift/trunk/lib/cpp/src/transport/TBufferTransports.h Wed Oct  6 17:10:43 2010
@@ -591,23 +591,7 @@ class TMemoryBuffer : public TVirtualTra
     str.append((char*)buf, sz);
   }
 
-  void resetBuffer(bool reset_capacity = false) {
-    if (reset_capacity)
-    {
-      assert(owner_);
-
-      void* new_buffer = std::realloc(buffer_, defaultSize);
-
-      if (new_buffer == NULL) {
-        throw TTransportException("Out of memory.");
-      }
-
-      buffer_ = (uint8_t*) new_buffer;
-      bufferSize_ = defaultSize;
-
-      wBound_ = buffer_ + bufferSize_;
-    }
-
+  void resetBuffer() {
     rBase_ = buffer_;
     rBound_ = buffer_;
     wBase_ = buffer_;