X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Fmodrdn.c;h=749f6571deefbf33906fd52d3e7475a4218ae1e9;hb=82c1b0d1f0a27e374961c910473f549878e81e24;hp=b950479151d02409caeec1ed0dfd61d4e7107b33;hpb=693be082648e4726c21e7f431c26c666263a6d18;p=openldap diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index b950479151..749f6571de 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -396,7 +396,7 @@ retry: /* transaction retry */ isroot = be_isroot( op ); if ( ! isroot ) { if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv ) - || be_isupdate( op ) ) { + || be_shadow_update( op ) ) { p = (Entry *)&slap_entry_root; @@ -1017,8 +1017,13 @@ retry: /* transaction retry */ } } else { - bdb_cache_modrdn( save, &op->orr_nnewrdn, e, neip, + rc = bdb_cache_modrdn( save, &op->orr_nnewrdn, e, neip, bdb->bi_dbenv, locker, &lock ); + switch( rc ) { + case DB_LOCK_DEADLOCK: + case DB_LOCK_NOTGRANTED: + goto retry; + } if ( LDAP_STAILQ_EMPTY( &op->o_bd->be_syncinfo )) { if ( ctxcsn_added ) {