https://bugzilla.redhat.com/show_bug.cgi?id=676053
https://bugzilla.redhat.com/attachment.cgi?id=479245&action=diff
https://bugzilla.redhat.com/attachment.cgi?id=479245&action=edit
Thanks to Rich for his comments. I've updated ldbm_back_search_cleanup
following his suggestions.
And thanks to Reinhard for his testing and reports. I've found 2 more places
entries are not released.
Description: There were 3 places where an entry was not released
by CACHE_RETURN (not decrimenting refcnt). If an entry has positive
refcnt in the entry cache, it won't be released even if the entry
never be accessed.
1. When a search request with VLV and/or SORT control fails.
2. When comparing entries in compare_entries_sv, and the second
entry is not found, the first entry is not released.
3. vlv_trim_candidates_byvalue retrieves entries for performing
binary search over the candidate list and put them into the cache.
They are not released.
This patch adds CACHE_RETURN call for the above cases.