diff options
author | Noriko Hosoi <nhosoi@redhat.com> | 2009-02-13 00:16:32 +0000 |
---|---|---|
committer | Noriko Hosoi <nhosoi@redhat.com> | 2009-02-13 00:16:32 +0000 |
commit | 07bb0d48ebb67db1bb8fa365754b40778a881bc2 (patch) | |
tree | e3e84fc4f99680dddb5cbe24d70f8a780e639184 /ldap/servers/slapd | |
parent | a7371944f0cc0b2e90fb4e98f53e20c933c92732 (diff) | |
download | ds-07bb0d48ebb67db1bb8fa365754b40778a881bc2.tar.gz ds-07bb0d48ebb67db1bb8fa365754b40778a881bc2.tar.xz ds-07bb0d48ebb67db1bb8fa365754b40778a881bc2.zip |
Resolves: #485321
Summary: Entry cache: invalid counter usage
Description: if new entry size is larger than old size, the delta is added to
the cache size using slapi_counter_add; otherwise, the delta is subtracted from
the cache size using slapi_counter_subtract.
Diffstat (limited to 'ldap/servers/slapd')
-rw-r--r-- | ldap/servers/slapd/back-ldbm/cache.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ldap/servers/slapd/back-ldbm/cache.c b/ldap/servers/slapd/back-ldbm/cache.c index c95c7867..84e935c9 100644 --- a/ldap/servers/slapd/back-ldbm/cache.c +++ b/ldap/servers/slapd/back-ldbm/cache.c @@ -865,7 +865,11 @@ int cache_replace(struct cache *cache, struct backentry *olde, /* adjust cache meta info */ newe->ep_refcnt = 1; newe->size = cache_entry_size(newe); - slapi_counter_add(cache->c_cursize, newe->size - olde->size); + if (newe->size > olde->size) { + slapi_counter_add(cache->c_cursize, newe->size - olde->size); + } else if (newe->size < olde->size) { + slapi_counter_subtract(cache->c_cursize, olde->size - newe->size); + } olde->ep_state = ENTRY_STATE_DELETED; newe->ep_state = 0; PR_Unlock(cache->c_mutex); |