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]