[ 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)