mturk 2004/08/05 07:41:10 Modified: ajp/proxy mod_proxy.c proxy_util.c mod_proxy.h Log: Added acquire timeout for obtaining resources from reslist. The timeout is in milliseconds to enable quick return in case the reslist is exceded the maximum number of connections. Revision Changes Path 1.25 +8 -1 jakarta-tomcat-connectors/ajp/proxy/mod_proxy.c Index: mod_proxy.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/proxy/mod_proxy.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- mod_proxy.c 5 Aug 2004 14:08:19 -0000 1.24 +++ mod_proxy.c 5 Aug 2004 14:41:10 -0000 1.25 @@ -92,7 +92,7 @@ else if (!strcasecmp(key, "ttl")) { ival = atoi(val); if (ival < 1) - return "ttl must be al least one second"; + return "ttl must be at least one second"; worker->ttl = apr_time_from_sec(ival); } else if (!strcasecmp(key, "min")) { @@ -114,6 +114,13 @@ return "smax must be a positive number"; worker->smax = ival; } + else if (!strcasecmp(key, "acquire")) { + ival = atoi(val); + if (ival < 1) + return "acquire must be at least one mili second"; + worker->acquire = apr_time_make(0, ival * 1000); + worker->acquire_set = 1; + } else { return "unknown parameter"; } 1.13 +36 -0 jakarta-tomcat-connectors/ajp/proxy/proxy_util.c Index: proxy_util.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/proxy/proxy_util.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- proxy_util.c 5 Aug 2004 14:08:19 -0000 1.12 +++ proxy_util.c 5 Aug 2004 14:41:10 -0000 1.13 @@ -1364,6 +1364,37 @@ return APR_SUCCESS; } +/* low level connection acquire/release functions + * they are hiding apr_reslist for nothreaded or prefork servers. + */ +static apr_status_t acquire_connection_low(proxy_conn_rec **conn, proxy_worker *worker) +{ + apr_status_t rv; +#if APR_HAS_THREADS + if (worker->hmax) { + rv = apr_reslist_acquire(worker->cp->res, (void **)conn); + } + else +#endif + { + *conn = worker->cp->conn; + rv = APR_SUCCESS; + } + return rv; +} + +static apr_status_t release_connection_low(proxy_conn_rec *conn, proxy_worker *worker) +{ + apr_status_t rv = APR_SUCCESS; +#if APR_HAS_THREADS + if (worker->hmax) { + rv = apr_reslist_release(worker->cp->res, (void *)conn); + } +#endif + return rv; +} + + static apr_status_t init_conn_worker(proxy_worker *worker, server_rec *s) { apr_status_t rv; @@ -1374,6 +1405,11 @@ worker->hmax, worker->ttl, connection_constructor, connection_destructor, s, worker->cp->pool); +#if (APR_MAJOR_VERSION > 0) + /* Set the acquire timeout */ + if (rv == APR_SUCCESS && worker->acquire_set) + apr_reslist_timeout_set(worker->cp->res, worker->acquire); +#endif } else #endif 1.17 +2 -1 jakarta-tomcat-connectors/ajp/proxy/mod_proxy.h Index: mod_proxy.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/proxy/mod_proxy.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- mod_proxy.h 5 Aug 2004 14:08:19 -0000 1.16 +++ mod_proxy.h 5 Aug 2004 14:41:10 -0000 1.17 @@ -228,7 +228,8 @@ apr_interval_time_t ttl; /* maximum amount of time in seconds a connection * may be available while exceeding the soft limit */ apr_interval_time_t timeout; /* connection timeout */ - + apr_interval_time_t acquire; /* acquire timeout when the maximum number of connections is exceeded */ + char acquire_set; proxy_conn_pool *cp; /* Connection pool to use */ void *opaque; /* per scheme worker data */ };
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]