]> granicus.if.org Git - apache/commitdiff
Failure to unlock is very nasty, so log it to help
authorJim Jagielski <jim@apache.org>
Fri, 8 Dec 2006 21:37:08 +0000 (21:37 +0000)
committerJim Jagielski <jim@apache.org>
Fri, 8 Dec 2006 21:37:08 +0000 (21:37 +0000)
with troubleshooting.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@484792 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/mod_proxy_balancer.c
modules/proxy/mod_proxy_ftp.c
modules/proxy/proxy_util.c

index ebcce2e693ffcc3876322460d8b61545bf9e23bf..529fa1a201dcc16e2ca468d8f28a19a57ed70bbf 100644 (file)
@@ -305,7 +305,10 @@ static proxy_worker *find_best_worker(proxy_balancer *balancer,
         return NULL;
 */
 
-    PROXY_THREAD_UNLOCK(balancer);
+    if ((rv = PROXY_THREAD_UNLOCK(balancer)) != APR_SUCCESS) {
+        ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,
+        "proxy: BALANCER: (%s). Unlock failed for find_best_worker()", balancer->name);
+    }
 
     if (candidate == NULL) {
         /* All the workers are in error state or disabled.
@@ -458,11 +461,19 @@ static int proxy_balancer_pre_request(proxy_worker **worker,
         ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
                      "proxy: BALANCER: (%s). All workers are in error state for route (%s)",
                      (*balancer)->name, route);
-        PROXY_THREAD_UNLOCK(*balancer);
+        if ((rv = PROXY_THREAD_UNLOCK(*balancer)) != APR_SUCCESS) {
+            ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,
+                         "proxy: BALANCER: (%s). Unlock failed for pre_request",
+                         (*balancer)->name);
+        }
         return HTTP_SERVICE_UNAVAILABLE;
     }
 
-    PROXY_THREAD_UNLOCK(*balancer);
+    if ((rv = PROXY_THREAD_UNLOCK(*balancer)) != APR_SUCCESS) {
+        ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,
+                     "proxy: BALANCER: (%s). Unlock failed for pre_request",
+                     (*balancer)->name);
+    }
     if (!*worker) {
         runtime = find_best_worker(*balancer, r);
         if (!runtime) {
@@ -535,7 +546,11 @@ static int proxy_balancer_post_request(proxy_worker *worker,
     /* TODO: placeholder for post_request actions
      */
 
-    PROXY_THREAD_UNLOCK(balancer);
+    if ((rv = PROXY_THREAD_UNLOCK(balancer)) != APR_SUCCESS) {
+        ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,
+            "proxy: BALANCER: (%s). Unlock failed for post_request",
+            balancer->name);
+    }
     ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
                  "proxy_balancer_post_request for (%s)", balancer->name);
 
index be670c0f993e9eb70cef687c8900fe51d2e2903b..90079f433cf715af793610869a7da3438f6bad1b 100644 (file)
@@ -916,7 +916,10 @@ static int proxy_ftp_handler(request_rec *r, proxy_worker *worker,
                                     address_pool);
     if (worker->is_address_reusable && !worker->cp->addr) {
         worker->cp->addr = connect_addr;
-        PROXY_THREAD_UNLOCK(worker);
+        if ((err = PROXY_THREAD_UNLOCK(worker)) != APR_SUCCESS) {
+            ap_log_error(APLOG_MARK, APLOG_ERR, err, r->server,
+                         "proxy: FTP: unlock");
+        }
     }
     /*
      * get all the possible IP addresses for the destname and loop through
index e8be508ab810f821c074d444953cfe1b40e87396..5fbc5c3b4bff07e79ead949826b40f4dce6d1cf5 100644 (file)
@@ -2049,7 +2049,10 @@ ap_proxy_determine_connection(apr_pool_t *p, request_rec *r,
                                     conn->port, 0,
                                     worker->cp->pool);
         conn->addr = worker->cp->addr;
-        PROXY_THREAD_UNLOCK(worker);
+        if ((err = PROXY_THREAD_UNLOCK(worker)) != APR_SUCCESS) {
+            ap_log_error(APLOG_MARK, APLOG_ERR, err, r->server,
+                         "proxy: unlock");
+        }
     }
     else {
         conn->addr = worker->cp->addr;