Author: mturk
Date: Tue Nov 15 22:55:41 2011
New Revision: 1202459
URL: http://svn.apache.org/viewvc?rev=1202459&view=rev
Log:
Axe thread lock result check. Its usage wasn't consistent and its basically
useless
Modified:
tomcat/jk/trunk/native/common/jk_ajp_common.c
tomcat/jk/trunk/native/common/jk_lb_worker.c
tomcat/jk/trunk/native/common/jk_mt.h
tomcat/jk/trunk/native/common/jk_shm.c
tomcat/jk/trunk/native/common/jk_uri_worker_map.c
tomcat/jk/trunk/native/common/jk_worker.c
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=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.c Tue Nov 15 22:55:41 2011
@@ -823,7 +823,7 @@ void ajp_close_endpoint(ajp_endpoint_t *
*/
static int ajp_next_connection(ajp_endpoint_t *ae, jk_logger_t *l)
{
- int rc;
+ unsigned int i;
int ret = JK_FALSE;
ajp_worker_t *aw = ae->worker;
@@ -834,27 +834,24 @@ static int ajp_next_connection(ajp_endpo
jk_shutdown_socket(ae->sd, l);
/* Mark existing endpoint socket as closed */
ae->sd = JK_INVALID_SOCKET;
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int i;
- for (i = 0; i < aw->ep_cache_sz; i++) {
- /* Find cache slot with usable socket */
- if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
- IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
- ae->sd = aw->ep_cache[i]->sd;
- aw->ep_cache[i]->sd = JK_INVALID_SOCKET;
- break;
- }
- }
- JK_LEAVE_CS(&aw->cs, rc);
- if (IS_VALID_SOCKET(ae->sd)) {
- ret = JK_TRUE;
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "(%s) Will try pooled connection socket %d from slot
%d",
- ae->worker->name, ae->sd, i);
+ JK_ENTER_CS(&aw->cs);
+ for (i = 0; i < aw->ep_cache_sz; i++) {
+ /* Find cache slot with usable socket */
+ if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
+ IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
+ ae->sd = aw->ep_cache[i]->sd;
+ aw->ep_cache[i]->sd = JK_INVALID_SOCKET;
+ break;
}
}
+ JK_LEAVE_CS(&aw->cs);
+ if (IS_VALID_SOCKET(ae->sd)) {
+ ret = JK_TRUE;
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "(%s) Will try pooled connection socket %d from slot %d",
+ ae->worker->name, ae->sd, i);
+ }
JK_TRACE_EXIT(l);
return ret;
}
@@ -1063,33 +1060,24 @@ void jk_ajp_pull(ajp_worker_t * aw, int
host, port, aw->name);
}
else {
- int rc;
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int i;
- for (i = 0; i < aw->ep_cache_sz; i++) {
- /* Close all avail connections in the cache
- * Note that this won't change active connections.
- */
- if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
- int sd = aw->ep_cache[i]->sd;
- 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--;
- }
+ unsigned int i;
+ JK_ENTER_CS(&aw->cs);
+ for (i = 0; i < aw->ep_cache_sz; i++) {
+ /* Close all avail connections in the cache
+ * Note that this won't change active connections.
+ */
+ if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
+ int sd = aw->ep_cache[i]->sd;
+ 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--;
}
}
aw->port = port;
strncpy(aw->host, host, JK_SHM_STR_SIZ);
memcpy(&(aw->worker_inet_addr), &inet_addr, sizeof(inet_addr));
- if (rc) {
- JK_LEAVE_CS(&aw->cs, rc);
- }
- else {
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)", errno);
- }
+ JK_LEAVE_CS(&aw->cs);
}
}
@@ -1130,26 +1118,20 @@ void jk_ajp_push(ajp_worker_t * aw, int
jk_shm_unlock();
if (address_change == JK_TRUE) {
- int rc;
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int i;
- for (i = 0; i < aw->ep_cache_sz; i++) {
- /* Close all connections in the cache */
- if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
- int sd = aw->ep_cache[i]->sd;
- 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--;
- }
+ unsigned int i;
+
+ JK_ENTER_CS(&aw->cs);
+ for (i = 0; i < aw->ep_cache_sz; i++) {
+ /* Close all connections in the cache */
+ if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
+ int sd = aw->ep_cache[i]->sd;
+ 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_LEAVE_CS(&aw->cs, rc);
- }
- else {
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)", errno);
}
+ JK_LEAVE_CS(&aw->cs);
}
JK_TRACE_EXIT(l);
}
@@ -3008,7 +2990,7 @@ int ajp_destroy(jk_worker_t **pThis, jk_
ajp_close_endpoint(aw->ep_cache[i], l);
}
free(aw->ep_cache);
- JK_DELETE_CS(&(aw->cs), i);
+ JK_DELETE_CS(&aw->cs);
if (aw->login) {
/* take care of removing previously allocated data */
@@ -3036,7 +3018,6 @@ int JK_METHOD ajp_done(jk_endpoint_t **e
if (e && *e && (*e)->endpoint_private) {
ajp_endpoint_t *p = (*e)->endpoint_private;
- int rc;
ajp_worker_t *w = p->worker;
/* set last_access only if needed */
@@ -3048,22 +3029,16 @@ int JK_METHOD ajp_done(jk_endpoint_t **e
}
ajp_reset_endpoint(p, l);
*e = NULL;
- JK_ENTER_CS(&w->cs, rc);
- if (rc) {
- p->avail = JK_TRUE;
- JK_LEAVE_CS(&w->cs, rc);
+ JK_ENTER_CS(&w->cs);
+ p->avail = JK_TRUE;
+ JK_LEAVE_CS(&w->cs);
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "recycling connection pool for worker %s and socket
%d",
- p->worker->name, (int)p->sd);
- JK_TRACE_EXIT(l);
- return JK_TRUE;
- }
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)", errno);
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "recycling connection pool for worker %s and socket %d",
+ p->worker->name, (int)p->sd);
JK_TRACE_EXIT(l);
- return JK_FALSE;
+ return JK_TRUE;
}
JK_LOG_NULL_PARAMS(l);
@@ -3079,77 +3054,67 @@ int ajp_get_endpoint(jk_worker_t *pThis,
if (pThis && pThis->worker_private && je) {
ajp_worker_t *aw = pThis->worker_private;
ajp_endpoint_t *ae = NULL;
- int rc;
int retry = 0;
*je = NULL;
/* Loop until cache_acquire_timeout interval elapses */
while ((retry * JK_SLEEP_DEF) < aw->cache_acquire_timeout) {
+ unsigned int slot;
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int slot;
- /* Try to find connected socket cache entry */
- for (slot = 0; slot < aw->ep_cache_sz; slot++) {
- if (IS_SLOT_AVAIL(aw->ep_cache[slot]) &&
- IS_VALID_SOCKET(aw->ep_cache[slot]->sd)) {
- ae = aw->ep_cache[slot];
- if (ae->reuse) {
- aw->ep_cache[slot]->avail = JK_FALSE;
- break;
- }
- else {
- /* XXX: We shouldn't have non reusable
- * opened socket in the cache
- */
- ajp_reset_endpoint(ae, l);
- ae->avail = JK_TRUE;
- ae = NULL;
- jk_log(l, JK_LOG_WARNING,
- "closing non reusable pool slot=%d", slot);
- }
+ JK_ENTER_CS(&aw->cs);
+ /* Try to find connected socket cache entry */
+ for (slot = 0; slot < aw->ep_cache_sz; slot++) {
+ if (IS_SLOT_AVAIL(aw->ep_cache[slot]) &&
+ IS_VALID_SOCKET(aw->ep_cache[slot]->sd)) {
+ ae = aw->ep_cache[slot];
+ if (ae->reuse) {
+ aw->ep_cache[slot]->avail = JK_FALSE;
+ break;
}
- }
- if (!ae) {
- /* No connected cache entry found.
- * Use the first free one.
- */
- for (slot = 0; slot < aw->ep_cache_sz; slot++) {
- if (IS_SLOT_AVAIL(aw->ep_cache[slot])) {
- ae = aw->ep_cache[slot];
- aw->ep_cache[slot]->avail = JK_FALSE;
- break;
- }
+ else {
+ /* XXX: We shouldn't have non reusable
+ * opened socket in the cache
+ */
+ ajp_reset_endpoint(ae, l);
+ ae->avail = JK_TRUE;
+ ae = NULL;
+ jk_log(l, JK_LOG_WARNING,
+ "closing non reusable pool slot=%d", slot);
}
}
- JK_LEAVE_CS(&aw->cs, rc);
- if (ae) {
- if (aw->cache_timeout > 0)
- ae->last_access = time(NULL);
- *je = &ae->endpoint;
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "acquired connection pool slot=%u after %d
retries",
- slot, retry);
- JK_TRACE_EXIT(l);
- return JK_TRUE;
- }
- else {
- retry++;
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "could not get free endpoint for worker %s"
- " (retry %d, sleeping for %d ms)",
- aw->name, retry, JK_SLEEP_DEF);
- jk_sleep(JK_SLEEP_DEF);
+ }
+ if (!ae) {
+ /* No connected cache entry found.
+ * Use the first free one.
+ */
+ for (slot = 0; slot < aw->ep_cache_sz; slot++) {
+ if (IS_SLOT_AVAIL(aw->ep_cache[slot])) {
+ ae = aw->ep_cache[slot];
+ aw->ep_cache[slot]->avail = JK_FALSE;
+ break;
+ }
}
}
- else {
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)", errno);
+ JK_LEAVE_CS(&aw->cs);
+ if (ae) {
+ if (aw->cache_timeout > 0)
+ ae->last_access = time(NULL);
+ *je = &ae->endpoint;
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "acquired connection pool slot=%u after %d retries",
+ slot, retry);
JK_TRACE_EXIT(l);
- return JK_FALSE;
-
+ return JK_TRUE;
+ }
+ else {
+ retry++;
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "could not get free endpoint for worker %s"
+ " (retry %d, sleeping for %d ms)",
+ aw->name, retry, JK_SLEEP_DEF);
+ jk_sleep(JK_SLEEP_DEF);
}
}
jk_log(l, JK_LOG_WARNING,
@@ -3171,8 +3136,11 @@ int JK_METHOD ajp_maintain(jk_worker_t *
if (pThis && pThis->worker_private) {
ajp_worker_t *aw = pThis->worker_private;
time_t now = mstarted;
- int rc;
+ int i;
long delta;
+ unsigned int n = 0, k = 0, cnt = 0;
+ unsigned int m, m_count = 0;
+ jk_sock_t *m_sock;
jk_shm_lock();
@@ -3201,114 +3169,100 @@ int JK_METHOD ajp_maintain(jk_worker_t *
return JK_TRUE;
}
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int n = 0, k = 0, cnt = 0;
- int i;
- unsigned int m, m_count = 0;
- jk_sock_t *m_sock;
- /* Count open slots */
- for (i = (int)aw->ep_cache_sz - 1; i >= 0; i--) {
- if (aw->ep_cache[i] && IS_VALID_SOCKET(aw->ep_cache[i]->sd))
- cnt++;
+ JK_ENTER_CS(&aw->cs);
+ /* Count open slots */
+ for (i = (int)aw->ep_cache_sz - 1; i >= 0; i--) {
+ if (aw->ep_cache[i] && IS_VALID_SOCKET(aw->ep_cache[i]->sd))
+ cnt++;
+ }
+ m_sock = (jk_sock_t *)malloc((cnt + 1) * sizeof(jk_sock_t));
+ /* Handle worker cache timeouts */
+ if (aw->cache_timeout > 0) {
+ for (i = (int)aw->ep_cache_sz - 1;
+ i >= 0; i--) {
+ /* Skip the closed sockets */
+ if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
+ IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
+ int elapsed = (int)difftime(mstarted,
aw->ep_cache[i]->last_access);
+ if (elapsed > aw->cache_timeout) {
+ time_t rt = 0;
+ n++;
+ if (JK_IS_DEBUG_LEVEL(l))
+ rt = time(NULL);
+ aw->ep_cache[i]->reuse = JK_FALSE;
+ m_sock[m_count++] = aw->ep_cache[i]->sd;
+ aw->ep_cache[i]->sd = JK_INVALID_SOCKET;
+ ajp_reset_endpoint(aw->ep_cache[i], l);
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "cleaning pool slot=%d elapsed %d in %d",
+ i, elapsed, (int)(difftime(time(NULL),
rt)));
+ }
+ }
+ if (cnt <= aw->ep_mincache_sz + n) {
+ if (JK_IS_DEBUG_LEVEL(l)) {
+ jk_log(l, JK_LOG_DEBUG,
+ "reached pool min size %u from %u cache slots",
+ aw->ep_mincache_sz, aw->ep_cache_sz);
+ }
+ break;
+ }
}
- m_sock = (jk_sock_t *)malloc((cnt + 1) * sizeof(jk_sock_t));
- /* Handle worker cache timeouts */
- if (aw->cache_timeout > 0) {
- for (i = (int)aw->ep_cache_sz - 1;
- i >= 0; i--) {
- /* Skip the closed sockets */
- if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
- IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
- int elapsed = (int)difftime(mstarted,
aw->ep_cache[i]->last_access);
- if (elapsed > aw->cache_timeout) {
- time_t rt = 0;
- n++;
- if (JK_IS_DEBUG_LEVEL(l))
- rt = time(NULL);
+ }
+ /* Handle worker connection keepalive */
+ if (aw->conn_ping_interval > 0 && aw->ping_timeout > 0) {
+ for (i = (int)aw->ep_cache_sz - 1; i >= 0; i--) {
+ /* Skip the closed sockets */
+ if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
+ IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
+ int elapsed = (int)difftime(now,
aw->ep_cache[i]->last_access);
+ if (elapsed > aw->conn_ping_interval) {
+ k++;
+ /* handle cping/cpong.
+ */
+ if (ajp_handle_cping_cpong(aw->ep_cache[i],
+ aw->ping_timeout, l) == JK_FALSE) {
+ jk_log(l, JK_LOG_INFO,
+ "(%s) failed sending request, "
+ "socket %d keepalive cping/cpong "
+ "failure (errno=%d)",
+ aw->name,
+ aw->ep_cache[i]->sd,
+ aw->ep_cache[i]->last_errno);
aw->ep_cache[i]->reuse = JK_FALSE;
m_sock[m_count++] = aw->ep_cache[i]->sd;
aw->ep_cache[i]->sd = JK_INVALID_SOCKET;
ajp_reset_endpoint(aw->ep_cache[i], l);
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "cleaning pool slot=%d elapsed %d in
%d",
- i, elapsed, (int)(difftime(time(NULL),
rt)));
}
- }
- if (cnt <= aw->ep_mincache_sz + n) {
- if (JK_IS_DEBUG_LEVEL(l)) {
- jk_log(l, JK_LOG_DEBUG,
- "reached pool min size %u from %u cache slots",
- aw->ep_mincache_sz, aw->ep_cache_sz);
- }
- break;
- }
- }
- }
- /* Handle worker connection keepalive */
- if (aw->conn_ping_interval > 0 && aw->ping_timeout > 0) {
- for (i = (int)aw->ep_cache_sz - 1; i >= 0; i--) {
- /* Skip the closed sockets */
- if (IS_SLOT_AVAIL(aw->ep_cache[i]) &&
- IS_VALID_SOCKET(aw->ep_cache[i]->sd)) {
- int elapsed = (int)difftime(now,
aw->ep_cache[i]->last_access);
- if (elapsed > aw->conn_ping_interval) {
- k++;
- /* handle cping/cpong.
- */
- if (ajp_handle_cping_cpong(aw->ep_cache[i],
- aw->ping_timeout, l) == JK_FALSE) {
- jk_log(l, JK_LOG_INFO,
- "(%s) failed sending request, "
- "socket %d keepalive cping/cpong "
- "failure (errno=%d)",
- aw->name,
- aw->ep_cache[i]->sd,
- aw->ep_cache[i]->last_errno);
- aw->ep_cache[i]->reuse = JK_FALSE;
- m_sock[m_count++] = aw->ep_cache[i]->sd;
- aw->ep_cache[i]->sd = JK_INVALID_SOCKET;
- ajp_reset_endpoint(aw->ep_cache[i], l);
- }
- else {
- now = time(NULL);
- aw->ep_cache[i]->last_access = now;
- }
+ else {
+ now = time(NULL);
+ aw->ep_cache[i]->last_access = now;
}
}
}
}
- JK_LEAVE_CS(&aw->cs, rc);
- /* Shutdown sockets outside of the lock.
- * This has benefits only if maintain was
- * called from the watchdog thread.
- */
- for (m = 0; m < m_count; m++) {
- jk_shutdown_socket(m_sock[m], l);
- }
- free(m_sock);
- if (n && 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), mstarted)),
- aw->ep_cache_sz);
- if (k && JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "pinged %u sockets in %d seconds from %u pool slots",
- k, (int)(difftime(time(NULL), mstarted)),
- aw->ep_cache_sz);
- JK_TRACE_EXIT(l);
- return JK_TRUE;
}
- else {
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)",
- errno);
- JK_TRACE_EXIT(l);
- return JK_FALSE;
-
+ JK_LEAVE_CS(&aw->cs);
+ /* Shutdown sockets outside of the lock.
+ * This has benefits only if maintain was
+ * called from the watchdog thread.
+ */
+ for (m = 0; m < m_count; m++) {
+ jk_shutdown_socket(m_sock[m], l);
}
+ free(m_sock);
+ if (n && 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), mstarted)),
+ aw->ep_cache_sz);
+ if (k && JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "pinged %u sockets in %d seconds from %u pool slots",
+ k, (int)(difftime(time(NULL), mstarted)),
+ aw->ep_cache_sz);
+ JK_TRACE_EXIT(l);
+ return JK_TRUE;
}
else {
JK_LOG_NULL_PARAMS(l);
@@ -3325,26 +3279,17 @@ int ajp_has_endpoint(jk_worker_t *pThis,
if (pThis && pThis->worker_private) {
ajp_worker_t *aw = pThis->worker_private;
- int rc;
+ unsigned int slot;
- JK_ENTER_CS(&aw->cs, rc);
- if (rc) {
- unsigned int slot;
- /* Try to find connected socket cache entry */
- for (slot = 0; slot < aw->ep_cache_sz; slot++) {
- if (IS_SLOT_AVAIL(aw->ep_cache[slot])) {
- JK_LEAVE_CS(&aw->cs, rc);
- return JK_TRUE;
- }
+ JK_ENTER_CS(&aw->cs);
+ /* Try to find connected socket cache entry */
+ for (slot = 0; slot < aw->ep_cache_sz; slot++) {
+ if (IS_SLOT_AVAIL(aw->ep_cache[slot])) {
+ JK_LEAVE_CS(&aw->cs);
+ return JK_TRUE;
}
- JK_LEAVE_CS(&aw->cs, rc);
- }
- else {
- jk_log(l, JK_LOG_ERROR,
- "locking thread (errno=%d)", errno);
- JK_TRACE_EXIT(l);
- return JK_FALSE;
}
+ JK_LEAVE_CS(&aw->cs);
}
else {
JK_LOG_NULL_PARAMS(l);
Modified: tomcat/jk/trunk/native/common/jk_lb_worker.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.c?rev=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.c (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.c Tue Nov 15 22:55:41 2011
@@ -954,7 +954,6 @@ static int get_most_suitable_worker(jk_w
jk_logger_t *l)
{
int rc = -1;
- int r;
JK_TRACE_ENTER(l);
if (p->num_of_workers == 1) {
@@ -978,15 +977,14 @@ static int get_most_suitable_worker(jk_w
}
}
if (p->lblock == JK_LB_LOCK_PESSIMISTIC) {
- r = jk_shm_lock();
+ if (!jk_shm_lock()) {
+ jk_log(l, JK_LOG_ERROR, "locking failed (errno=%d)", errno);
+ JK_TRACE_EXIT(l);
+ return -1;
+ }
}
else {
- JK_ENTER_CS(&(p->cs), r);
- }
- if (!r) {
- jk_log(l, JK_LOG_ERROR,
- "locking failed (errno=%d)",
- errno);
+ JK_ENTER_CS(&p->cs);
}
if (sessionid) {
char *session = sessionid;
@@ -1016,7 +1014,7 @@ static int get_most_suitable_worker(jk_w
jk_shm_unlock();
}
else {
- JK_LEAVE_CS(&(p->cs), r);
+ JK_LEAVE_CS(&p->cs);
}
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
@@ -1035,7 +1033,7 @@ static int get_most_suitable_worker(jk_w
jk_shm_unlock();
}
else {
- JK_LEAVE_CS(&(p->cs), r);
+ JK_LEAVE_CS(&p->cs);
}
jk_log(l, JK_LOG_INFO,
"all workers are in error state for session %s",
@@ -1049,7 +1047,7 @@ static int get_most_suitable_worker(jk_w
jk_shm_unlock();
}
else {
- JK_LEAVE_CS(&(p->cs), r);
+ JK_LEAVE_CS(&p->cs);
}
if (rc >= 0) {
lb_sub_worker_t *wr = &(p->lb_workers[rc]);
@@ -1824,11 +1822,10 @@ static int JK_METHOD destroy(jk_worker_t
JK_TRACE_ENTER(l);
if (pThis && *pThis && (*pThis)->worker_private) {
- unsigned int i;
lb_worker_t *private_data = (*pThis)->worker_private;
close_workers(private_data, private_data->num_of_workers, l);
- JK_DELETE_CS(&(private_data->cs), i);
+ JK_DELETE_CS(&private_data->cs);
jk_close_pool(&private_data->p);
free(private_data);
Modified: tomcat/jk/trunk/native/common/jk_mt.h
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_mt.h?rev=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_mt.h (original)
+++ tomcat/jk/trunk/native/common/jk_mt.h Tue Nov 15 22:55:41 2011
@@ -48,9 +48,9 @@
typedef CRITICAL_SECTION JK_CRIT_SEC;
#define JK_INIT_CS(x, rc) InitializeCriticalSection(x); rc = JK_TRUE
-#define JK_DELETE_CS(x, rc) DeleteCriticalSection(x); rc = JK_TRUE
-#define JK_ENTER_CS(x, rc) EnterCriticalSection(x); rc = JK_TRUE
-#define JK_LEAVE_CS(x, rc) LeaveCriticalSection(x); rc = JK_TRUE
+#define JK_DELETE_CS(x) DeleteCriticalSection(x)
+#define JK_ENTER_CS(x) EnterCriticalSection(x)
+#define JK_LEAVE_CS(x) LeaveCriticalSection(x)
#else /* !WIN32 */
#define _MT_CODE_PTHREAD
@@ -59,17 +59,12 @@ typedef CRITICAL_SECTION JK_CRIT_SEC;
#include <fcntl.h>
typedef pthread_mutex_t JK_CRIT_SEC;
-#define JK_INIT_CS(x, rc)\
+#define JK_INIT_CS(x, rc) \
if (pthread_mutex_init(x, NULL)) rc = JK_FALSE; else rc = JK_TRUE
-#define JK_DELETE_CS(x, rc)\
- if (pthread_mutex_destroy(x)) rc = JK_FALSE; else rc = JK_TRUE
-
-#define JK_ENTER_CS(x, rc)\
- if (pthread_mutex_lock(x)) rc = JK_FALSE; else rc = JK_TRUE
-
-#define JK_LEAVE_CS(x, rc)\
- if (pthread_mutex_unlock(x)) rc = JK_FALSE; else rc = JK_TRUE
+#define JK_DELETE_CS(x) pthread_mutex_destroy(x)
+#define JK_ENTER_CS(x) pthread_mutex_lock(x)
+#define JK_LEAVE_CS(x) pthread_mutex_unlock(x)
#if defined(AS400) || defined(NETWARE)
#define jk_pthread_t jk_uint32_t
@@ -81,9 +76,9 @@ jk_pthread_t jk_gettid(void);
typedef void *JK_CRIT_SEC;
#define JK_INIT_CS(x, rc) rc = JK_TRUE
-#define JK_DELETE_CS(x, rc) rc = JK_TRUE
-#define JK_ENTER_CS(x, rc) rc = JK_TRUE
-#define JK_LEAVE_CS(x, rc) rc = JK_TRUE
+#define JK_DELETE_CS(x) (void)0
+#define JK_ENTER_CS(x) (void)0
+#define JK_LEAVE_CS(x) (void)0
#define jk_gettid() 0
#endif /* MT_CODE */
Modified: tomcat/jk/trunk/native/common/jk_shm.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_shm.c?rev=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_shm.c (original)
+++ tomcat/jk/trunk/native/common/jk_shm.c Tue Nov 15 22:55:41 2011
@@ -159,12 +159,12 @@ int jk_shm_open(const char *fname, size_
jk_shm_inited_cs = 1;
JK_INIT_CS(&jk_shmem.cs, rc);
}
- JK_ENTER_CS(&jk_shmem.cs, rc);
+ JK_ENTER_CS(&jk_shmem.cs);
if (jk_shmem.hdr) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG, "Shared memory is already opened");
JK_TRACE_EXIT(l);
- JK_LEAVE_CS(&jk_shmem.cs, rc);
+ JK_LEAVE_CS(&jk_shmem.cs);
return 0;
}
jk_shmem.size = JK_SHM_ALIGN(sizeof(jk_shm_header_t) + sz);
@@ -179,7 +179,7 @@ int jk_shm_open(const char *fname, size_
}
}
if (jk_shm_hlock == NULL) {
- JK_LEAVE_CS(&jk_shmem.cs, rc);
+ JK_LEAVE_CS(&jk_shmem.cs);
JK_TRACE_EXIT(l);
return -1;
}
@@ -188,7 +188,7 @@ int jk_shm_open(const char *fname, size_
if (ws == WAIT_FAILED) {
CloseHandle(jk_shm_hlock);
jk_shm_hlock = NULL;
- JK_LEAVE_CS(&jk_shmem.cs, rc);
+ JK_LEAVE_CS(&jk_shmem.cs);
JK_TRACE_EXIT(l);
return -1;
}
@@ -309,8 +309,7 @@ int jk_shm_attach(const char *fname, siz
void jk_shm_close()
{
if (jk_shm_inited_cs) {
- int rc;
- JK_ENTER_CS(&jk_shmem.cs, rc);
+ JK_ENTER_CS(&jk_shmem.cs);
}
if (jk_shmem.hdr) {
#if defined (WIN32)
@@ -334,8 +333,7 @@ void jk_shm_close()
jk_shmem.filename = NULL;
}
if (jk_shm_inited_cs) {
- int rc;
- JK_LEAVE_CS(&jk_shmem.cs, rc);
+ JK_LEAVE_CS(&jk_shmem.cs);
}
}
@@ -761,20 +759,18 @@ void jk_shm_sync_access_time()
int jk_shm_lock()
{
- int rc;
+ int rc = JK_TRUE;
if (!jk_shm_inited_cs)
return JK_FALSE;
- JK_ENTER_CS(&jk_shmem.cs, rc);
+ JK_ENTER_CS(&jk_shmem.cs);
#if defined (WIN32)
- if (rc == JK_TRUE && jk_shm_hlock != NULL) {
- if (WaitForSingleObject(jk_shm_hlock, INFINITE) != WAIT_FAILED)
- rc = JK_TRUE;
- else
+ if (jk_shm_hlock != NULL) {
+ if (WaitForSingleObject(jk_shm_hlock, INFINITE) == WAIT_FAILED)
rc = JK_FALSE;
}
#else
- if (rc == JK_TRUE && jk_shmem.fd_lock != -1) {
+ if (jk_shmem.fd_lock != -1) {
JK_ENTER_LOCK(jk_shmem.fd_lock, rc);
}
#endif
@@ -783,7 +779,7 @@ int jk_shm_lock()
int jk_shm_unlock()
{
- int rc;
+ int rc = JK_TRUE;
if (!jk_shm_inited_cs)
return JK_FALSE;
@@ -796,7 +792,7 @@ int jk_shm_unlock()
JK_LEAVE_LOCK(jk_shmem.fd_lock, rc);
}
#endif
- JK_LEAVE_CS(&jk_shmem.cs, rc);
+ JK_LEAVE_CS(&jk_shmem.cs);
return rc;
}
Modified: tomcat/jk/trunk/native/common/jk_uri_worker_map.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_uri_worker_map.c?rev=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_uri_worker_map.c (original)
+++ tomcat/jk/trunk/native/common/jk_uri_worker_map.c Tue Nov 15 22:55:41 2011
@@ -256,8 +256,7 @@ static int uri_worker_map_close(jk_uri_w
JK_TRACE_ENTER(l);
if (uw_map) {
- int i;
- JK_DELETE_CS(&(uw_map->cs), i);
+ JK_DELETE_CS(&uw_map->cs);
jk_close_pool(&uw_map->p_dyn[0]);
jk_close_pool(&uw_map->p_dyn[1]);
jk_close_pool(&uw_map->p);
@@ -1254,10 +1253,10 @@ int uri_worker_map_update(jk_uri_worker_
uw_map->fname);
return JK_TRUE;
}
- JK_ENTER_CS(&(uw_map->cs), rc);
+ JK_ENTER_CS(&uw_map->cs);
/* Check if some other thread updated status */
if (statbuf.st_mtime == uw_map->modified) {
- JK_LEAVE_CS(&(uw_map->cs), rc);
+ JK_LEAVE_CS(&uw_map->cs);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"File %s is not modified",
@@ -1267,7 +1266,7 @@ int uri_worker_map_update(jk_uri_worker_
rc = uri_worker_map_load(uw_map, l);
uri_worker_map_ext(uw_map, l);
uri_worker_map_switch(uw_map, l);
- JK_LEAVE_CS(&(uw_map->cs), rc);
+ JK_LEAVE_CS(&uw_map->cs);
jk_log(l, JK_LOG_INFO,
"Reloaded urimaps from %s", uw_map->fname);
}
Modified: tomcat/jk/trunk/native/common/jk_worker.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_worker.c?rev=1202459&r1=1202458&r2=1202459&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_worker.c (original)
+++ tomcat/jk/trunk/native/common/jk_worker.c Tue Nov 15 22:55:41 2011
@@ -92,9 +92,8 @@ int wc_open(jk_map_t *init_data, jk_work
void wc_close(jk_logger_t *l)
{
- int rc;
JK_TRACE_ENTER(l);
- JK_DELETE_CS(&worker_lock, rc);
+ JK_DELETE_CS(&worker_lock);
close_workers(l);
JK_TRACE_EXIT(l);
}
@@ -318,11 +317,11 @@ void wc_maintain(jk_logger_t *l)
if (sz > 0 && worker_maintain_time > 0 &&
difftime(time(NULL), last_maintain) >= worker_maintain_time) {
int i;
- JK_ENTER_CS(&worker_lock, i);
+ JK_ENTER_CS(&worker_lock);
if (running_maintain ||
difftime(time(NULL), last_maintain) < worker_maintain_time) {
/* Already in maintain */
- JK_LEAVE_CS(&worker_lock, i);
+ JK_LEAVE_CS(&worker_lock);
JK_TRACE_EXIT(l);
return;
}
@@ -330,7 +329,7 @@ void wc_maintain(jk_logger_t *l)
* the maintain until we are finished.
*/
running_maintain = 1;
- JK_LEAVE_CS(&worker_lock, i);
+ JK_LEAVE_CS(&worker_lock);
for (i = 0; i < sz; i++) {
jk_worker_t *w = jk_map_value_at(worker_map, i);
@@ -342,10 +341,10 @@ void wc_maintain(jk_logger_t *l)
w->maintain(w, time(NULL), l);
}
}
- JK_ENTER_CS(&worker_lock, i);
+ JK_ENTER_CS(&worker_lock);
last_maintain = time(NULL);
running_maintain = 0;
- JK_LEAVE_CS(&worker_lock, i);
+ JK_LEAVE_CS(&worker_lock);
}
JK_TRACE_EXIT(l);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]