]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/modrdn.c
Changes from HEAD, including
[openldap] / servers / slapd / back-bdb / modrdn.c
index b950479151d02409caeec1ed0dfd61d4e7107b33..749f6571deefbf33906fd52d3e7475a4218ae1e9 100644 (file)
@@ -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 ) {