]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/delete.c
normalize authcDN (ITS#3246); don't touch databases when running slapadd in dryryn...
[openldap] / servers / slapd / back-bdb / delete.c
index eca67741364b056f80bc91e46b9e24dba4e4025d..148230ec01419f82c4c69cc716a66853a7647e82 100644 (file)
@@ -206,12 +206,14 @@ retry:    /* transaction retry */
        }
 
        rc = bdb_cache_find_id( op, ltid, eip->bei_id, &eip, 0, locker, &plock );
-       if ( rc ) {
-               switch( rc ) {
-               case DB_LOCK_DEADLOCK:
-               case DB_LOCK_NOTGRANTED:
-                       goto retry;
-               }
+       switch( rc ) {
+       case DB_LOCK_DEADLOCK:
+       case DB_LOCK_NOTGRANTED:
+               goto retry;
+       case 0:
+       case DB_NOTFOUND:
+               break;
+       default:
                rs->sr_err = LDAP_OTHER;
                rs->sr_text = "internal error";
                goto return_results;
@@ -579,7 +581,18 @@ retry:     /* transaction retry */
                if ( rs->sr_err == LDAP_SUCCESS && !op->o_no_psearch ) {
                        ldap_pvt_thread_rdwr_wlock( &bdb->bi_pslist_rwlock );
                        LDAP_LIST_FOREACH( ps_list, &bdb->bi_psearch_list, o_ps_link ) {
-                               bdb_psearch( op, rs, ps_list, e, LDAP_PSEARCH_BY_DELETE );
+                               rc = bdb_psearch( op, rs, ps_list, e, LDAP_PSEARCH_BY_DELETE );
+                               if ( rc ) {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG ( OPERATION, ERR,
+                                               "bdb_delete: persistent search failed (%d,%d)\n",
+                                               rc, rs->sr_err, 0 );
+#else
+                                       Debug( LDAP_DEBUG_TRACE,
+                                               "bdb_delete: persistent search failed (%d,%d)\n",
+                                               rc, rs->sr_err, 0 );
+#endif
+                               }
                        }
                        ldap_pvt_thread_rdwr_wunlock( &bdb->bi_pslist_rwlock );
                }