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

Hudson commented on THRIFT-3084:
--------------------------------

SUCCESS: Integrated in Thrift #1526 (See 
[https://builds.apache.org/job/Thrift/1526/])
THRIFT-3084 add optional concurrent client limit enforcement to lib/cpp 
threaded servers (roger: rev 79c9911b8780d1f9d7c2c17623d269f0671d1723)
* lib/cpp/test/ZlibTest.cpp
* lib/cpp/src/thrift/server/TServerFramework.h
* lib/cpp/src/thrift/server/TThreadedServer.cpp
* lib/cpp/src/thrift/protocol/TDenseProtocol.cpp
* lib/cpp/src/thrift/server/TSimpleServer.cpp
* lib/c_glib/test/testthrifttestclient.cpp
* lib/cpp/src/thrift/server/TSimpleServer.h
* lib/cpp/src/thrift/server/TServerFramework.cpp
* lib/cpp/CMakeLists.txt
* lib/cpp/test/TServerIntegrationTest.cpp
* lib/cpp/Makefile.am
* lib/cpp/test/Makefile.am
* lib/cpp/src/thrift/server/TThreadPoolServer.cpp
* lib/cpp/src/thrift/server/TThreadedServer.h
* lib/cpp/src/thrift/server/TThreadPoolServer.h


> C++ add concurrent client limit to threaded servers
> ---------------------------------------------------
>
>                 Key: THRIFT-3084
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3084
>             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
>
>         Attachments: THRIFT-3084-on-3083.v2.patch
>
>
> The TThreadedServer and TThreadPoolServer do not impose limits on the number 
> of simultaneous connections, which is not useful in production as bad clients 
> can drive a server to consume too many file descriptors or have too many 
> threads.
> With TThreadPoolServer one can set the limit on the number of threads, 
> however the server will use one additional file descriptor because the 
> serve() routine does not block until after accepting the threadManager size + 
> 1 sockets.
> With TThreadedServer there was no built-in way to throttle.
> Give the serve() loop is the only code capable of adding a client, the 
> solution is to add a Monitor to the TServerFramework and check the number of 
> concurrent clients immediately before calling TServerTransport::accept() to 
> get another client, and to track the number of clients that are still alive 
> (their smart pointer hasn't been destroyed).



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

Reply via email to