You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2015/01/05 12:45:32 UTC
svn commit: r1649506 - in /tomcat/jk/trunk: native/common/jk_ajp_common.c
xdocs/miscellaneous/changelog.xml
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org