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

Re: (ITS#5114) pcache cache results for searches that hit size/timelimit

hyc@symas.com wrote:
> Ralf Haferkamp wrote:
>> On Freitag, 21. September 2007, hyc@symas.com wrote:
>>> It seems to be failing for me more often than not. Why is it
>>> non-deterministic?
>> It seems that the order in which the entries are inserted into the cache is 
>> non-deterministic. Because of that the order in which they are returned from 
>> cache varies as well. The final test that compares the ldapsearch results 
>> with proxycache.out relies on the order.
>> I get a lot of DB_LOCK_DEADLOCK in slapd.2.log and if I don't missread the log 
>> it seems that sometimes the entries from Query 9 get inserted into the cache 
>> before the entry from Query 5 ("cn=Bjorn Jensen,ou=Information Technology 
>> Division, ...") and sometimes after. Depending on that the test either fails 
>> or succeeds.
> OK, I see that as well. In fact setting a breakpoint on the Deadlock result, I 
> see 3 threads still trying to add entries to the cache when the deadlock 
> occurs. This appears to be a consequence of letting the client continue on 
> before the pcache overlay has finished its work. But, I thought you were 
> locking the cache so that requests would not run while query processing was 
> incomplete?

I see, you're only locking individual queries. That's certainly inadequate, 
you'll probably have to lock the entire cache as a whole. Remember that an 
entry that you're adding may actually satisfy multiple queries.
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/