Author: rjung Date: Mon Jan 5 11:45:31 2015 New Revision: 1649506 URL: http://svn.apache.org/r1649506 Log: BZ 56703: Status: Improve connected counter by using atomics.
Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1649506&r1=1649505&r2=1649506&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_ajp_common.c (original) +++ tomcat/jk/trunk/native/common/jk_ajp_common.c Mon Jan 5 11:45:31 2015 @@ -818,7 +818,7 @@ static void ajp_abort_endpoint(ajp_endpo jk_shutdown_socket(ae->sd, l); } } - ae->worker->s->connected--; + JK_ATOMIC_DECREMENT(&(ae->worker->s->connected)); ae->sd = JK_INVALID_SOCKET; } ae->last_op = JK_AJP13_END_RESPONSE; @@ -856,9 +856,9 @@ void ajp_close_endpoint(ajp_endpoint_t * ae->worker->name, ae->sd, ae->reuse ? "" : " (socket shutdown)"); if (IS_VALID_SOCKET(ae->sd)) { jk_shutdown_socket(ae->sd, l); - ae->worker->s->connected--; + JK_ATOMIC_DECREMENT(&(ae->worker->s->connected)); + ae->sd = JK_INVALID_SOCKET; } - ae->sd = JK_INVALID_SOCKET; jk_close_pool(&(ae->pool)); free(ae); JK_TRACE_EXIT(l); @@ -884,11 +884,9 @@ static int ajp_next_connection(ajp_endpo */ if (IS_VALID_SOCKET(ae->sd)) { jk_shutdown_socket(ae->sd, l); - ae->worker->s->connected--; + JK_ATOMIC_DECREMENT(&(ae->worker->s->connected)); + ae->sd = JK_INVALID_SOCKET; } - /* Mark existing endpoint socket as closed - */ - ae->sd = JK_INVALID_SOCKET; JK_ENTER_CS(&aw->cs); for (i = 0; i < aw->ep_cache_sz; i++) { /* Find cache slot with usable socket @@ -1036,6 +1034,7 @@ int ajp_connect_to_endpoint(ajp_endpoint { char buf[64]; int rc = JK_TRUE; + int connected; JK_TRACE_ENTER(l); @@ -1055,11 +1054,11 @@ int ajp_connect_to_endpoint(ajp_endpoint JK_TRACE_EXIT(l); return JK_FALSE; } - ae->worker->s->connected++; + connected = JK_ATOMIC_INCREMENT(&(ae->worker->s->connected)); /* Update maximum number of connections */ - if (ae->worker->s->connected > ae->worker->s->max_connected) - ae->worker->s->max_connected = ae->worker->s->connected; + if (connected > ae->worker->s->max_connected) + ae->worker->s->max_connected = connected; /* set last_access only if needed */ if (ae->worker->cache_timeout > 0) @@ -1153,7 +1152,7 @@ void jk_ajp_pull(ajp_worker_t * aw, int aw->ep_cache[i]->sd = JK_INVALID_SOCKET; aw->ep_cache[i]->addr_sequence = aw->addr_sequence; jk_shutdown_socket(sd, l); - aw->s->connected--; + JK_ATOMIC_DECREMENT(&(aw->s->connected)); } } jk_clone_sockaddr(&(aw->worker_inet_addr), &inet_addr); @@ -1215,7 +1214,7 @@ void jk_ajp_push(ajp_worker_t * aw, int aw->ep_cache[i]->sd = JK_INVALID_SOCKET; aw->ep_cache[i]->addr_sequence = aw->addr_sequence; jk_shutdown_socket(sd, l); - aw->s->connected--; + JK_ATOMIC_DECREMENT(&(aw->s->connected)); } } JK_LEAVE_CS(&aw->cs); @@ -3443,9 +3442,9 @@ int JK_METHOD ajp_maintain(jk_worker_t * * called from the watchdog thread. */ for (m = 0; m < m_count; m++) { - if (m_sock[m] != JK_INVALID_SOCKET) { + if (IS_VALID_SOCKET(m_sock[m])) { jk_shutdown_socket(m_sock[m], l); - aw->s->connected--; + JK_ATOMIC_DECREMENT(&(aw->s->connected)); } } free(m_sock); Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=1649506&r1=1649505&r2=1649506&view=diff ============================================================================== --- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Mon Jan 5 11:45:31 2015 @@ -171,6 +171,11 @@ <fix> <bug>44454</bug>: Improve busy counter by using atomics. (rjung) </fix> + <fix> + <bug>56703</bug>: Status: Improve connected counter. Use atomics + and for mod_jk (Apache) currectly count down connections closed + by child processes that are stopped. (rjung) + </fix> </changelog> </subsection> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org