--- src/cache.c (Revision 77488) +++ src/cache.c (Arbeitskopie) @@ -560,13 +560,8 @@ } rv = dntree_del_id(*id2dn_cursor_pp, dnid); - if (rv != MDB_SUCCESS) { - signals_unblock(); - return rv; - } signals_unblock(); - return rv; } --- src/cache_dn.c (Revision 77393) +++ src/cache_dn.c (Arbeitskopie) @@ -317,7 +353,9 @@ dbi = mdb_cursor_dbi(write_cursor_p); rv = mdb_cursor_open(txn, dbi, &local_read_cursor_p); if (rv != MDB_SUCCESS) { - univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "%s: mdb_cursor_open: %s (%d)", __func__, ldap_err2string(rv), rv); + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, + "%s: mdb_cursor_open: %s (%d)", + __func__, ldap_err2string(rv), rv); abort(); return rv; } @@ -324,12 +362,15 @@ rv = dntree_has_children(local_read_cursor_p, dnid); if (rv == MDB_SUCCESS) { - univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "%s: delete failed:" - " subordinate objects must be deleted first", + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_INFO, + "%s: delete failed:" + " subordinate objects must be deleted first", __func__); - return -1; + return MDB_SUCCESS; } else if (rv != MDB_NOTFOUND) { - univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "%s: dntree_has_children failed: %s (%d)", __func__, mdb_strerror(rv), rv); + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, + "%s: dntree_has_children failed: %s (%d)", + __func__, mdb_strerror(rv), rv); abort(); return -1; } @@ -344,11 +385,24 @@ rv = mdb_cursor_get(write_cursor_p, &key, &data, MDB_SET); if (rv == MDB_SUCCESS) { rv = mdb_cursor_del(write_cursor_p, 0); + if (rv != MDB_SUCCESS) + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, + "%s: failed for node id=%lu: %s (%d)", + __func__, dnid, mdb_strerror(rv), rv); + abort(); + } } + } else { + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, + "%s: failed for link id=%lu: %s (%d)", + __func__, dnid, mdb_strerror(rv), rv); + abort(); } if (rv == MDB_SUCCESS) { - univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_INFO, "%s: deleted id=%lu", __func__, dnid); + univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_INFO, + "%s: deleted id=%lu", + __func__, dnid); } return rv;