[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#5457) bdb_add() does not always release entries



h.b.furuseth@usit.uio.no wrote:
> Full_Name: Hallvard B Furuseth
> Version: HEAD, 2.3, 2.4
> OS:
> URL:
> Submission from: (NULL) (129.240.6.233)
> Submitted by: hallvard
>
>
> back-bdb/add.c has several code paths where the parent entry
> "p" is not released - it does "goto return_results;" without
> first doing
>
>      if ( p&&  p !=&slap_entry_root )
>          bdb_unlocked_cache_return_entry_r(&bdb->bi_cache, p );
>      p = NULL;

Releasing entries is somewhat irrelevant, since all locks are released when 
the transaction commits. Note that this function is a no-op in proto-bdb.h. 
All of those statements are just relics from the first entry cache design, 
before we switched to using BDB locks for everything.

Probably could stand to do some cleanup. The diffs would be quite drastic 
though. Again, this may be something that's best deferred until 2.3 is dropped.
-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/