[ 
https://issues.apache.org/jira/browse/THRIFT-3081?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14513251#comment-14513251
 ] 

Hudson commented on THRIFT-3081:
--------------------------------

SUCCESS: Integrated in Thrift #1521 (See 
[https://builds.apache.org/job/Thrift/1521/])
THRIFT-3081 consolidate client processing loop in Simple, Threaded, and Thread 
Pool servers (roger: rev 5ec805b22b81001b1b785cd7f85eb8647fde60df)
* lib/cpp/src/thrift/server/TSimpleServer.cpp
* lib/cpp/src/thrift/server/TConnectedClient.h
* lib/cpp/src/thrift/server/TSimpleServer.h
* lib/cpp/Makefile.am
* lib/cpp/src/thrift/server/TThreadedServer.cpp
* lib/cpp/src/thrift/server/TConnectedClient.cpp
* lib/cpp/src/thrift/server/TThreadPoolServer.cpp
* lib/cpp/CMakeLists.txt
* lib/cpp/src/thrift/server/TThreadedServer.h
* lib/cpp/src/thrift/server/TThreadPoolServer.h


> C++ Consolidate client processing loops in TServers
> ---------------------------------------------------
>
>                 Key: THRIFT-3081
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3081
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Library
>    Affects Versions: 0.8, 0.9, 0.9.1, 0.9.2
>            Reporter: James E. King, III
>             Fix For: 0.9.3
>
>
> Currently each of TSimpleServer, TThreadedServer, and TThreadPoolServer have 
> their own very similar but not quite identical way of processing a client's 
> lifetime.  The code has been copied around and changed; for example a 
> TThreadPoolServer handles TTransportExceptions from process() differently 
> than a TThreadedServer does.
> There are certain requirements for this processing loop that needs to be met 
> by every client.  Consolidating these three disparate implementations of the 
> client processing loop into one will provide consistency as well as easier 
> maintenance, as there will be one common client processing loop that will 
> contain all the logic from {{eventHandler->createContext}} through 
> {{client->close}}.
> It was also discovered that all three implementations call peek() in each 
> loop which causes more recv calls than are really needed.  Will experiment 
> with removing peek entirely; expectation is that it is sufficient to have 
> exception handling around process() and/or have process() return false to end 
> the processing loop, and peek() is likely an unnecessary temporary band-aid 
> that got left there.
> This was inspired by changes in THRIFT-2441 and I was encouraged to make this 
> a separate body of work from that change so that it can be reviewed in 
> isolation from other changes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to