You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2011/05/04 00:37:48 UTC
svn commit: r1099287 - in /trafficserver/traffic/trunk:
contrib/perl/AdminClient/lib/Apache/TS/ example/protocol/ iocore/net/ mgmt/
proxy/ proxy/api/ts/ proxy/logging/
Author: zwoop
Date: Tue May 3 22:37:48 2011
New Revision: 1099287
URL: http://svn.apache.org/viewvc?rev=1099287&view=rev
Log:
TS-757 Change TSNetAccept() API to take an option for enabling (and
number of) accept threads. Also have it take a protocol "domain"
argument, to be consistent with the underlying internal APIs.
Modified:
trafficserver/traffic/trunk/contrib/perl/AdminClient/lib/Apache/TS/AdminClient.pm
trafficserver/traffic/trunk/example/protocol/Protocol.c
trafficserver/traffic/trunk/iocore/net/I_NetProcessor.h
trafficserver/traffic/trunk/iocore/net/SSLUnixNet.cc
trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc
trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
trafficserver/traffic/trunk/proxy/InkAPI.cc
trafficserver/traffic/trunk/proxy/InkAPITest.cc
trafficserver/traffic/trunk/proxy/InkAPITestTool.cc
trafficserver/traffic/trunk/proxy/api/ts/ts.h.in
trafficserver/traffic/trunk/proxy/logging/LogCollationAccept.cc
Modified: trafficserver/traffic/trunk/contrib/perl/AdminClient/lib/Apache/TS/AdminClient.pm
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/contrib/perl/AdminClient/lib/Apache/TS/AdminClient.pm?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/contrib/perl/AdminClient/lib/Apache/TS/AdminClient.pm (original)
+++ trafficserver/traffic/trunk/contrib/perl/AdminClient/lib/Apache/TS/AdminClient.pm Tue May 3 22:37:48 2011
@@ -616,7 +616,6 @@ The Apache Traffic Server Administration
proxy.config.net.ink_disk_io_watermark
proxy.config.net.listen_backlog
proxy.config.net.max_kqueue_len
- proxy.config.net.nt.main_accept_pool_size
proxy.config.net_snapshot_filename
proxy.config.net.sock_mss_in
proxy.config.net.sock_option_flag_in
Modified: trafficserver/traffic/trunk/example/protocol/Protocol.c
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/example/protocol/Protocol.c?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/example/protocol/Protocol.c (original)
+++ trafficserver/traffic/trunk/example/protocol/Protocol.c Tue May 3 22:37:48 2011
@@ -96,7 +96,7 @@ protocol_init(int accept_port, int serve
When there are requests coming in, contp's handler
should be called, in this case, contp's handler
is accept_event, see AcceptSM.c */
- pending_action = TSNetAccept(contp, accept_port);
+ pending_action = TSNetAccept(contp, accept_port, -1, 1);
}
int
Modified: trafficserver/traffic/trunk/iocore/net/I_NetProcessor.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/I_NetProcessor.h?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/I_NetProcessor.h (original)
+++ trafficserver/traffic/trunk/iocore/net/I_NetProcessor.h Tue May 3 22:37:48 2011
@@ -132,7 +132,8 @@ public:
port becomes free immediately.
*/
- inkcoreapi virtual Action * accept(Continuation * cont, int port, int domain = AF_INET, bool frequent_accept = false,
+ inkcoreapi virtual Action * accept(Continuation * cont, int port, int domain = AF_INET, int accept_threads = -1,
+ bool frequent_accept = false,
// not used
unsigned int accept_ip = INADDR_ANY, char *accept_ip_str = NULL, bool callback_on_open = false,
SOCKET listen_socket_in = NO_FD, // NT only
Modified: trafficserver/traffic/trunk/iocore/net/SSLUnixNet.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/SSLUnixNet.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/SSLUnixNet.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/SSLUnixNet.cc Tue May 3 22:37:48 2011
@@ -61,7 +61,7 @@ SSLNetProcessor::start(int number_of_ssl
ET_SSL = eventProcessor.spawn_event_threads(number_of_ssl_threads);
if (err == 0)
err = UnixNetProcessor::start();
- return (err);
+ return err;
}
@@ -87,20 +87,20 @@ SSLNetProcessor::upgradeEtype(EventType
EventType
SSLNetAccept::getEtype()
{
- return (ET_SSL);
+ return ET_SSL;
}
// Functions all THREAD_FREE and THREAD_ALLOC to be performed
// for both SSL and regular NetVConnection transparent to
// accept functions.
UnixNetVConnection *
-SSLNetAccept::allocateThread(EThread * t)
+SSLNetAccept::allocateThread(EThread *t)
{
return ((UnixNetVConnection *) THREAD_ALLOC(sslNetVCAllocator, t));
}
void
-SSLNetAccept::freeThread(UnixNetVConnection * vc, EThread * t)
+SSLNetAccept::freeThread(UnixNetVConnection *vc, EThread *t)
{
ink_assert(!vc->from_accept_thread);
THREAD_FREE((SSLNetVConnection *) vc, sslNetVCAllocator, t);
@@ -119,13 +119,13 @@ SSLNetAccept::allocateGlobal()
// have them in both places, but it saves a bunch of
// connect code from being duplicated.
UnixNetVConnection *
-SSLNetProcessor::allocateThread(EThread * t)
+SSLNetProcessor::allocateThread(EThread *t)
{
return ((UnixNetVConnection *) THREAD_ALLOC(sslNetVCAllocator, t));
}
void
-SSLNetProcessor::freeThread(UnixNetVConnection * vc, EThread * t)
+SSLNetProcessor::freeThread(UnixNetVConnection *vc, EThread *t)
{
ink_assert(!vc->from_accept_thread);
THREAD_FREE((SSLNetVConnection *) vc, sslNetVCAllocator, t);
Modified: trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc Tue May 3 22:37:48 2011
@@ -555,14 +555,13 @@ NetAccept::acceptLoopEvent(int event, Ev
//
//
-NetAccept::NetAccept():
-Continuation(NULL),
-port(0),
-period(0),
-alloc_cache(0),
-ifd(-1), callback_on_open(false), recv_bufsize(0), send_bufsize(0), sockopt_flags(0), etype(0)
-{
-}
+NetAccept::NetAccept()
+ : Continuation(NULL),
+ port(0),
+ period(0),
+ alloc_cache(0),
+ ifd(-1), callback_on_open(false), recv_bufsize(0), send_bufsize(0), sockopt_flags(0), etype(0)
+{ }
//
Modified: trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc Tue May 3 22:37:48 2011
@@ -63,6 +63,7 @@ Action *
NetProcessor::accept(Continuation * cont,
int port,
int domain,
+ int accept_threads,
bool frequent_accept,
unsigned int accept_ip,
char *accept_ip_str,
@@ -80,11 +81,11 @@ NetProcessor::accept(Continuation * cont
(void) bound_sockaddr; // NT only
(void) bound_sockaddr_size; // NT only
Debug("iocore_net_processor",
- "NetProcessor::accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
- port, recv_bufsize, send_bufsize, sockopt_flags
- );
+ "NetProcessor::accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
+ port, recv_bufsize, send_bufsize, sockopt_flags);
AcceptOptions opt;
+
opt.port = port;
opt.domain = domain;
opt.etype = etype;
@@ -92,6 +93,8 @@ NetProcessor::accept(Continuation * cont
opt.recv_bufsize = recv_bufsize;
opt.send_bufsize = send_bufsize;
opt.sockopt_flags = opt.sockopt_flags;
+ opt.accept_threads = accept_threads;
+
return ((UnixNetProcessor *) this)->accept_internal(cont, NO_FD,
bound_sockaddr,
bound_sockaddr_size,
@@ -99,8 +102,7 @@ NetProcessor::accept(Continuation * cont
net_accept,
accept_ip,
accept_ip_str,
- opt
- );
+ opt);
}
Action *
@@ -120,8 +122,7 @@ NetProcessor::main_accept(Continuation *
net_accept,
((UnixNetProcessor *) this)->incoming_ip_to_bind_saddr,
((UnixNetProcessor *) this)->incoming_ip_to_bind,
- opt
- );
+ opt);
}
@@ -135,17 +136,21 @@ UnixNetProcessor::accept_internal(Contin
AcceptFunction fn,
unsigned int accept_ip,
char *accept_ip_str,
- AcceptOptions const& opt
- )
+ AcceptOptions const& opt)
{
EventType et = opt.etype; // setEtype requires non-const ref.
NetAccept *na = createNetAccept();
EThread *thread = this_ethread();
ProxyMutex *mutex = thread->mutex;
+ int accept_threads = opt.accept_threads;
// Potentially upgrade to SSL.
upgradeEtype(et);
+ // Fill in accept thread from configuration if necessary.
+ if (opt.accept_threads < 0)
+ IOCORE_ReadConfigInteger(accept_threads, "proxy.config.accept_threads");
+
NET_INCREMENT_DYN_STAT(net_accepts_currently_open_stat);
na->port = opt.port;
na->domain = opt.domain;
@@ -167,18 +172,18 @@ UnixNetProcessor::accept_internal(Contin
if (na->callback_on_open)
na->mutex = cont->mutex;
if (frequent_accept) { // true
- if (opt.accept_threads > 0) {
+ if (accept_threads > 0) {
if (0 == na->do_listen(BLOCKING)) {
NetAccept *a;
- for (int i=1; i < opt.accept_threads; ++i) {
+ for (int i=1; i < accept_threads; ++i) {
a = NEW(new NetAccept);
*a = *na;
a->init_accept_loop();
Debug("iocore_net_accept", "Created accept thread #%d for port %d", i, opt.port);
}
// Start the "template" accept thread last.
- Debug("iocore_net_accept", "Created accept thread #%d for port %d", opt.accept_threads, opt.port);
+ Debug("iocore_net_accept", "Created accept thread #%d for port %d", accept_threads, opt.port);
na->init_accept_loop();
}
} else {
Modified: trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/RecordsConfig.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/RecordsConfig.cc (original)
+++ trafficserver/traffic/trunk/mgmt/RecordsConfig.cc Tue May 3 22:37:48 2011
@@ -865,8 +865,6 @@ RecordElement RecordsConfig[] = {
,
{RECT_CONFIG, "proxy.config.net.sock_mss_in", RECD_INT, "0", RECU_NULL, RR_NULL, RECC_NULL, NULL, RECA_NULL}
,
- {RECT_CONFIG, "proxy.config.net.nt.main_accept_pool_size", RECD_INT, "500", RECU_RESTART_TS, RR_NULL, RECC_NULL, NULL, RECA_NULL}
- ,
//##############################################################################
//#
Modified: trafficserver/traffic/trunk/proxy/InkAPI.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPI.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPI.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPI.cc Tue May 3 22:37:48 2011
@@ -6090,15 +6090,21 @@ TSNetConnect(TSCont contp, unsigned int
}
TSAction
-TSNetAccept(TSCont contp, int port)
+TSNetAccept(TSCont contp, int port, int domain, int accept_threads)
{
sdk_assert(sdk_sanity_check_continuation(contp) == TS_SUCCESS);
sdk_assert(port > 0);
+ sdk_assert(accept_threads >= -1);
+ // TODO: Does this imply that only one "accept thread" could be
+ // doing an accept at any time?
FORCE_PLUGIN_MUTEX(contp);
+ if (domain < 0)
+ domain = AF_INET;
+
INKContInternal *i = (INKContInternal *) contp;
- return (TSAction)netProcessor.accept(i, port);
+ return (TSAction)netProcessor.accept(i, port, domain, accept_threads);
}
/* DNS Lookups */
Modified: trafficserver/traffic/trunk/proxy/InkAPITest.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPITest.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPITest.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPITest.cc Tue May 3 22:37:48 2011
@@ -331,7 +331,7 @@ REGRESSION_TEST(SDK_API_TSNetVConn) (Reg
TSCont server_cont = TSContCreate(server_handler, server_mutex);
TSCont client_cont = TSContCreate(client_handler, client_mutex);
- TSNetAccept(server_cont, server_port);
+ TSNetAccept(server_cont, server_port, -1, 0);
unsigned int server_ip = IP(127, 0, 0, 1);
TSNetConnect(client_cont, server_ip, server_port);
Modified: trafficserver/traffic/trunk/proxy/InkAPITestTool.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPITestTool.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPITestTool.cc Tue May 3 22:37:48 2011
@@ -743,7 +743,7 @@ static int
synserver_start(SocketServer * s)
{
TSAssert(s->magic == MAGIC_ALIVE);
- s->accept_action = TSNetAccept(s->accept_cont, s->accept_port);
+ s->accept_action = TSNetAccept(s->accept_cont, s->accept_port, -1, 0);
return 1;
}
Modified: trafficserver/traffic/trunk/proxy/api/ts/ts.h.in
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/api/ts/ts.h.in?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/api/ts/ts.h.in (original)
+++ trafficserver/traffic/trunk/proxy/api/ts/ts.h.in Tue May 3 22:37:48 2011
@@ -2349,7 +2349,7 @@ extern "C"
*/
tsapi TSAction TSNetConnect(TSCont contp, unsigned int ip, int port);
- tsapi TSAction TSNetAccept(TSCont contp, int port);
+ tsapi TSAction TSNetAccept(TSCont contp, int port, int domain, int accept_threads);
/* --------------------------------------------------------------------------
DNS Lookups */
Modified: trafficserver/traffic/trunk/proxy/logging/LogCollationAccept.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogCollationAccept.cc?rev=1099287&r1=1099286&r2=1099287&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogCollationAccept.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogCollationAccept.cc Tue May 3 22:37:48 2011
@@ -36,10 +36,10 @@
// LogCollationAccept::LogCollationAccept
//-------------------------------------------------------------------------
-LogCollationAccept::LogCollationAccept(int port):
- Continuation(new_ProxyMutex()),
- m_port(port),
- m_pending_event(NULL)
+LogCollationAccept::LogCollationAccept(int port)
+ : Continuation(new_ProxyMutex()),
+ m_port(port),
+ m_pending_event(NULL)
{
SET_HANDLER((LogCollationAcceptHandler) & LogCollationAccept::accept_event);
@@ -47,9 +47,8 @@ LogCollationAccept::LogCollationAccept(i
// appended to itself if multiple do_io_reads are called requesting
// small amounts of data. Most arguments are default except for the
// last one which we will set to true.
- m_accept_action = netProcessor.accept(this, m_port, AF_INET, false, INADDR_ANY, NULL, false, NO_FD, ACCEPTEX_POOL_SIZE, true);
+ m_accept_action = netProcessor.accept(this, m_port, AF_INET, 0, false, INADDR_ANY, NULL, false, NO_FD, ACCEPTEX_POOL_SIZE, true);
ink_assert(NULL != m_accept_action);
-
}
//-------------------------------------------------------------------------
@@ -58,7 +57,6 @@ LogCollationAccept::LogCollationAccept(i
LogCollationAccept::~LogCollationAccept()
{
-
Debug("log-collation", "LogCollationAccept::~LogCollationAccept");
// stop the netProcessor
@@ -83,7 +81,6 @@ LogCollationAccept::~LogCollationAccept(
if (m_pending_event && (m_pending_event != ACTION_RESULT_DONE)) {
m_pending_event->cancel();
}
-
}
//-------------------------------------------------------------------------
@@ -93,11 +90,9 @@ LogCollationAccept::~LogCollationAccept(
int
LogCollationAccept::accept_event(int event, NetVConnection * net_vc)
{
-
LogCollationHostSM *sm;
switch (event) {
-
case NET_EVENT_ACCEPT:
sm = NEW(new LogCollationHostSM(net_vc));
ink_assert(NULL != sm);
@@ -109,5 +104,4 @@ LogCollationAccept::accept_event(int eve
}
return EVENT_CONT;
-
}