tis 2007-11-20 klockan 07:09 -0800 skrev Howard Chu:
Dan.Oscarsson@tietoenator.com wrote:
If this looks correct to you, what code should I add to fix it? It would be better if one of you who knows the code better than me could do that. I can test and see if it works.
Thanks for your investigation; this explanation makes sense. You can test this simply by disabling the statement in bdb_cache_modrdn() which sets the NO_KIDS flags:
I have tested and it fixed my reduced test case. Running full test still failes. So I suspected it might have to do with CACHE_ENTRY_NO_GRANDKIDS and tested by removing the test for CACHE_ENTRY_NO_GRANDKIDS in dn2id.c *************** *** 1044,1058 **** if ( cx->prefix == DN_SUBTREE_PREFIX ) { bdb_idl_append( cx->ids, cx->tmp ); cx->need_sort = 1; ! /*if ( !(cx->ei->bei_state & CACHE_ENTRY_NO_GRANDKIDS)) {*/ ! {
to get it to go down in the tree.
This time even my full test works, from what I can see. Though this may not be the correct way to do it, and I do not know if something else may go wrong. It looks like the setting and usage of CACHE_ENTRY_NO_GRANDKIDS and CACHE_ENTRY_NO_KIDS have to be looked over. From what I can see they are only used in cache.c, dn2id.c and modrdn.c in back-bdb/hdb. Should I try something else?
Regards,
Dan