ASF Bugzilla – Attachment 35608 Details for
Bug 61891
infinitive loop of AH01323: Purge of LDAP cache failed
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
mod_ldap TTL patch
httpd-2.4.27.mod_ldap_ttl.patch (text/plain), 7.64 KB, created by
Hendrik Harms
on 2017-12-11 15:28:15 UTC
(
hide
)
Description:
mod_ldap TTL patch
Filename:
MIME Type:
Creator:
Hendrik Harms
Created:
2017-12-11 15:28:15 UTC
Size:
7.64 KB
patch
obsolete
># ># This patch base on the source code downloaded from ># http://httpd.apache.org/download.cgi (Version: 2.4.27) ># ># HOWTO apply this patch: ># after extracting the source from tar.gz or zip go into the base dir: ># > cd httpd-2.4.27 ># > patch -p0 -b -i httpd-2.4.27.mod_ldap_ttl.patch ># ># >--- modules/ldap/util_ldap_cache.h.orig 2011-09-23 20:08:42.000000000 +0200 >+++ modules/ldap/util_ldap_cache.h 2017-12-11 14:44:41.932763422 +0100 >@@ -46,6 +46,7 @@ > unsigned long numentries; /* Current number of cache entries */ > unsigned long fullmark; /* Used to keep track of when cache becomes 3/4 full */ > apr_time_t marktime; /* Time that the cache became 3/4 full */ >+ unsigned long ttl; /* Time to live for items in cache */ > unsigned long (*hash)(void *); /* Func to hash the payload */ > int (*compare)(void *, void *); /* Func to compare two payloads */ > void * (*copy)(util_ald_cache_t *cache, void *); /* Func to alloc mem and copy payload to new mem */ >@@ -188,6 +189,7 @@ > util_url_node_t *util_ald_create_caches(util_ldap_state_t *s, const char *url); > util_ald_cache_t *util_ald_create_cache(util_ldap_state_t *st, > long cache_size, >+ long cache_ttl, > unsigned long (*hashfunc)(void *), > int (*comparefunc)(void *, void *), > void * (*copyfunc)(util_ald_cache_t *cache, void *), >--- modules/ldap/util_ldap_cache.c.orig 2015-10-06 14:36:36.000000000 +0200 >+++ modules/ldap/util_ldap_cache.c 2017-12-11 15:10:53.248643208 +0100 >@@ -114,6 +114,7 @@ > "<td nowrap>%ld</td>" > "<td nowrap>%ld</td>" > "<td nowrap>%ld</td>" >+ "<td nowrap>%ld</td>" > "<td nowrap>%s</td>" > "</tr>", > node->url, >@@ -121,6 +122,7 @@ > cache_node->size, > cache_node->maxentries, > cache_node->numentries, >+ cache_node->ttl / APR_USEC_PER_SEC, > cache_node->fullmark, > date_str); > } >@@ -452,6 +454,7 @@ > st->util_ldap_cache = > util_ald_create_cache(st, > st->search_cache_size, >+ st->search_cache_ttl, > util_ldap_url_node_hash, > util_ldap_url_node_compare, > util_ldap_url_node_copy, >--- modules/ldap/util_ldap_cache_mgr.c.orig 2016-08-25 14:48:18.000000000 +0200 >+++ modules/ldap/util_ldap_cache_mgr.c 2017-12-11 15:17:19.571130430 +0100 >@@ -241,6 +241,8 @@ > cache->last_purge = apr_time_now(); > cache->npurged = 0; > cache->numpurges++; >+ if (cache->last_purge - cache->ttl > cache->marktime) >+ cache->marktime = cache->last_purge - cache->ttl; > > for (i=0; i < cache->size; ++i) { > pp = cache->nodes + i; >@@ -281,6 +283,7 @@ > /* create the three caches */ > search_cache = util_ald_create_cache(st, > st->search_cache_size, >+ st->search_cache_ttl, > util_ldap_search_node_hash, > util_ldap_search_node_compare, > util_ldap_search_node_copy, >@@ -288,6 +291,7 @@ > util_ldap_search_node_display); > compare_cache = util_ald_create_cache(st, > st->compare_cache_size, >+ st->compare_cache_ttl, > util_ldap_compare_node_hash, > util_ldap_compare_node_compare, > util_ldap_compare_node_copy, >@@ -295,6 +299,7 @@ > util_ldap_compare_node_display); > dn_compare_cache = util_ald_create_cache(st, > st->compare_cache_size, >+ st->compare_cache_ttl, > util_ldap_dn_compare_node_hash, > util_ldap_dn_compare_node_compare, > util_ldap_dn_compare_node_copy, >@@ -323,6 +328,7 @@ > > util_ald_cache_t *util_ald_create_cache(util_ldap_state_t *st, > long cache_size, >+ long cache_ttl, > unsigned long (*hashfunc)(void *), > int (*comparefunc)(void *, void *), > void * (*copyfunc)(util_ald_cache_t *cache, void *), >@@ -381,8 +387,10 @@ > cache->free = freefunc; > cache->display = displayfunc; > >+ > cache->fullmark = cache->maxentries / 4 * 3; > cache->marktime = 0; >+ cache->ttl = cache_ttl; > cache->avg_purgetime = 0.0; > cache->numpurges = 0; > cache->last_purge = 0; >@@ -727,6 +735,10 @@ > "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>" > "</tr>\n" > "<tr>\n" >+ "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>TTL (sec):</b></font></td>" >+ "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>" >+ "</tr>\n" >+ "<tr>\n" > "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark:</b></font></td>" > "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>" > "</tr>\n" >@@ -738,6 +750,7 @@ > util_ldap_cache->size, > util_ldap_cache->maxentries, > util_ldap_cache->numentries, >+ util_ldap_cache->ttl / APR_USEC_PER_SEC, > util_ldap_cache->fullmark, > date_str); > >@@ -748,6 +761,7 @@ > "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Size</b></font></td>" > "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Max Entries</b></font></td>" > "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b># Entries</b></font></td>" >+ "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>TTL (sec)</b></font></td>" > "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark</b></font></td>" > "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark Time</b></font></td>" > "</tr>\n", r >--- modules/ldap/util_ldap.c.orig 2015-09-08 13:10:16.000000000 +0200 >+++ modules/ldap/util_ldap.c 2017-12-11 14:55:08.002210792 +0100 >@@ -2244,7 +2244,7 @@ > return err; > } > >- st->compare_cache_ttl = atol(ttl) * 1000000; >+ st->compare_cache_ttl = atol(ttl) * APR_USEC_PER_SEC; > > ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, cmd->server, APLOGNO(01301) > "ldap cache: Setting operation cache TTL to %ld microseconds.", >@@ -2815,9 +2815,9 @@ > #endif > > st->cache_bytes = 500000; >- st->search_cache_ttl = 600000000; >+ st->search_cache_ttl = 600 * APR_USEC_PER_SEC; /* 10 minutes */ > st->search_cache_size = 1024; >- st->compare_cache_ttl = 600000000; >+ st->compare_cache_ttl = 600 * APR_USEC_PER_SEC; /* 10 minutes */ > st->compare_cache_size = 1024; > st->connections = NULL; > st->ssl_supported = 0;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 61891
: 35608