Author: rjung
Date: Fri Dec 14 12:12:58 2007
New Revision: 604285
URL: http://svn.apache.org/viewvc?rev=604285&view=rev
Log:
Make synchronized blocks a little smaller,
remove unnecessary shutdown before reset
and log a little more data.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=604285&r1=604284&r2=604285&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Fri Dec 14
12:12:58 2007
@@ -685,14 +685,18 @@
static void ajp_reset_endpoint(ajp_endpoint_t * ae, jk_logger_t *l)
{
+ JK_TRACE_ENTER(l);
+
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "(%s) resetting endpoint with sd = %u %s",
+ ae->worker->name, ae->sd, ae->reuse? "" : "(socket shutdown)");
if (IS_VALID_SOCKET(ae->sd) && !ae->reuse) {
jk_shutdown_socket(ae->sd, l);
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "reset socket with sd = %u", ae->sd );
ae->sd = JK_INVALID_SOCKET;
}
jk_reset_pool(&(ae->pool));
+ JK_TRACE_EXIT(l);
}
/*
@@ -703,14 +707,14 @@
{
JK_TRACE_ENTER(l);
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "(%s) closing endpoint with sd = %u %s",
+ ae->worker->name, ae->sd, ae->reuse? "" : "(socket shutdown)");
if (IS_VALID_SOCKET(ae->sd)) {
jk_shutdown_socket(ae->sd, l);
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "closed socket with sd = %d", ae->sd);
ae->sd = JK_INVALID_SOCKET;
}
-
jk_close_pool(&(ae->pool));
free(ae);
JK_TRACE_EXIT(l);
@@ -2260,6 +2264,7 @@
"worker %s contact is '%s:%d'",
p->name, p->host, p->port);
+/* XXX: Why do we only resolve, if port > 1024 ? */
if (p->port > 1024) {
if (jk_resolve(p->host, p->port, &p->worker_inet_addr, l)) {
JK_TRACE_EXIT(l);
@@ -2297,26 +2302,26 @@
jk_log(l, JK_LOG_DEBUG,
"setting connection pool size to %u with min %u",
p->ep_cache_sz, p->ep_mincache_sz);
- for (i = 0; i < p->ep_cache_sz; i++) {
- p->ep_cache[i] = (ajp_endpoint_t *)calloc(1,
sizeof(ajp_endpoint_t));
- if (!p->ep_cache[i]) {
- jk_log(l, JK_LOG_ERROR,
- "allocating endpoint slot %d (errno=%d)",
- i, errno);
- JK_TRACE_EXIT(l);
- return JK_FALSE;
- }
- p->ep_cache[i]->sd = JK_INVALID_SOCKET;
- p->ep_cache[i]->reuse = JK_FALSE;
- p->ep_cache[i]->last_access = now;
- jk_open_pool(&(p->ep_cache[i]->pool), p->ep_cache[i]->buf,
- sizeof(p->ep_cache[i]->buf));
- p->ep_cache[i]->worker = p;
- p->ep_cache[i]->endpoint.endpoint_private = p->ep_cache[i];
- p->ep_cache[i]->proto = proto;
- p->ep_cache[i]->endpoint.service = ajp_service;
- p->ep_cache[i]->endpoint.done = ajp_done;
+ for (i = 0; i < p->ep_cache_sz; i++) {
+ p->ep_cache[i] = (ajp_endpoint_t *)calloc(1, sizeof(ajp_endpoint_t));
+ if (!p->ep_cache[i]) {
+ jk_log(l, JK_LOG_ERROR,
+ "allocating endpoint slot %d (errno=%d)",
+ i, errno);
+ JK_TRACE_EXIT(l);
+ return JK_FALSE;
}
+ p->ep_cache[i]->sd = JK_INVALID_SOCKET;
+ p->ep_cache[i]->reuse = JK_FALSE;
+ p->ep_cache[i]->last_access = now;
+ jk_open_pool(&(p->ep_cache[i]->pool), p->ep_cache[i]->buf,
+ sizeof(p->ep_cache[i]->buf));
+ p->ep_cache[i]->worker = p;
+ p->ep_cache[i]->endpoint.endpoint_private = p->ep_cache[i];
+ p->ep_cache[i]->proto = proto;
+ p->ep_cache[i]->endpoint.service = ajp_service;
+ p->ep_cache[i]->endpoint.done = ajp_done;
+ }
JK_TRACE_EXIT(l);
return JK_TRUE;
@@ -2374,7 +2379,6 @@
&p->http_status_fail[0],
JK_MAX_HTTP_STATUS_FAILS);
-
pThis->retries =
jk_get_worker_retries(props, p->name,
JK_RETRIES);
@@ -2510,42 +2514,23 @@
int rc;
ajp_worker_t *w = p->worker;
+ /* set last_access only if needed */
+ if (w->cache_timeout > 0)
+ p->last_access = time(NULL);
+ ajp_reset_endpoint(p, l);
+ *e = NULL;
JK_ENTER_CS(&w->cs, rc);
if (rc) {
int i;
- jk_sock_t sock = JK_INVALID_SOCKET;
- /* If we are going to close the connection, then park the socket so
- we can shut it down nicely rather than letting
ajp_reset_endpoint kill it */
- if (IS_VALID_SOCKET(p->sd) && !p->reuse) {
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "will be shutting down socket %u for worker %s",
- p->sd, p->worker->name );
- sock = p->sd;
- p->sd = JK_INVALID_SOCKET;
- }
for(i = w->ep_cache_sz - 1; i >= 0; i--) {
if (w->ep_cache[i] == NULL) {
w->ep_cache[i] = p;
break;
}
}
- ajp_reset_endpoint(p, l);
- *e = NULL;
- /* set last_access only if needed */
- if (w->cache_timeout > 0)
- p->last_access = time(NULL);
JK_LEAVE_CS(&w->cs, rc);
- /* Drain and close the socket */
- if (IS_VALID_SOCKET(sock)) {
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "Shutting down held socket %u in worker %s",
- sock, p->worker->name);
- jk_shutdown_socket(sock, l);
- }
if (i >= 0) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
@@ -2554,7 +2539,7 @@
JK_TRACE_EXIT(l);
return JK_TRUE;
}
- /* XXX: This should never hapen because
+ /* This should never hapen because
* there is always free empty cache slot
*/
jk_log(l, JK_LOG_ERROR,
@@ -2600,10 +2585,10 @@
break;
}
}
+ JK_LEAVE_CS(&aw->cs, rc);
if (ae) {
ae->last_access = now;
*je = &ae->endpoint;
- JK_LEAVE_CS(&aw->cs, rc);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"acquired connection pool slot=%u",
@@ -2616,7 +2601,6 @@
"Unable to get the free endpoint for worker %s from %u
slots",
aw->name, aw->ep_cache_sz);
}
- JK_LEAVE_CS(&aw->cs, rc);
}
else {
jk_log(l, JK_LOG_ERROR,
@@ -2686,12 +2670,12 @@
break;
}
}
+ JK_LEAVE_CS(&aw->cs, rc);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"recycled %u sockets in %d seconds from %u pool slots",
n, (int)(difftime(time(NULL), now)),
aw->ep_cache_sz);
- JK_LEAVE_CS(&aw->cs, rc);
JK_TRACE_EXIT(l);
return JK_TRUE;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]