From: Howard Chu Date: Sun, 10 Feb 2008 00:56:44 +0000 (+0000) Subject: Cleanup bdb_next_id unused arg X-Git-Tag: OPENLDAP_REL_ENG_2_4_9~20^2~184 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=90e644a1e9be5a2690f5c285dbdc4bd70d334249;p=openldap Cleanup bdb_next_id unused arg --- diff --git a/servers/slapd/back-bdb/add.c b/servers/slapd/back-bdb/add.c index a6fcfc8bf0..b10f7d239e 100644 --- a/servers/slapd/back-bdb/add.c +++ b/servers/slapd/back-bdb/add.c @@ -33,6 +33,7 @@ bdb_add(Operation *op, SlapReply *rs ) AttributeDescription *children = slap_schema.si_ad_children; AttributeDescription *entry = slap_schema.si_ad_entry; DB_TXN *ltid = NULL, *lt2; + ID eid = NOID; struct bdb_op_info opinfo = {0}; int subentry; BDB_LOCKER locker = 0, rlocker = 0; @@ -115,20 +116,6 @@ txnReturn: subentry = is_entry_subentry( op->oq_add.rs_e ); - /* - * acquire an ID outside of the operation transaction - * to avoid serializing adds. - */ - rs->sr_err = bdb_next_id( op->o_bd, NULL, &op->oq_add.rs_e->e_id ); - if( rs->sr_err != 0 ) { - Debug( LDAP_DEBUG_TRACE, - LDAP_XSTRING(bdb_add) ": next_id failed (%d)\n", - rs->sr_err, 0, 0 ); - rs->sr_err = LDAP_OTHER; - rs->sr_text = "internal error"; - goto return_results; - } - /* Get our thread locker ID */ rs->sr_err = LOCK_ID( bdb->bi_dbenv, &rlocker ); @@ -315,6 +302,19 @@ retry: /* transaction retry */ goto return_results;; } + if ( eid == NOID ) { + rs->sr_err = bdb_next_id( op->o_bd, &eid ); + if( rs->sr_err != 0 ) { + Debug( LDAP_DEBUG_TRACE, + LDAP_XSTRING(bdb_add) ": next_id failed (%d)\n", + rs->sr_err, 0, 0 ); + rs->sr_err = LDAP_OTHER; + rs->sr_text = "internal error"; + goto return_results; + } + op->oq_add.rs_e->e_id = eid; + } + /* nested transaction */ rs->sr_err = TXN_BEGIN( bdb->bi_dbenv, ltid, <2, bdb->bi_db_opflags ); diff --git a/servers/slapd/back-bdb/nextid.c b/servers/slapd/back-bdb/nextid.c index 2eb6f5b85a..fe62acb8b5 100644 --- a/servers/slapd/back-bdb/nextid.c +++ b/servers/slapd/back-bdb/nextid.c @@ -21,7 +21,7 @@ #include "back-bdb.h" -int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *out ) +int bdb_next_id( BackendDB *be, ID *out ) { struct bdb_info *bdb = (struct bdb_info *) be->be_private; diff --git a/servers/slapd/back-bdb/proto-bdb.h b/servers/slapd/back-bdb/proto-bdb.h index 095dee532c..dc5a713e78 100644 --- a/servers/slapd/back-bdb/proto-bdb.h +++ b/servers/slapd/back-bdb/proto-bdb.h @@ -419,7 +419,7 @@ bdb_key_change( #define bdb_next_id BDB_SYMBOL(next_id) #define bdb_last_id BDB_SYMBOL(last_id) -int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *id ); +int bdb_next_id( BackendDB *be, ID *id ); int bdb_last_id( BackendDB *be, DB_TXN *tid ); /* diff --git a/servers/slapd/back-bdb/tools.c b/servers/slapd/back-bdb/tools.c index f5051a19de..3583edcb75 100644 --- a/servers/slapd/back-bdb/tools.c +++ b/servers/slapd/back-bdb/tools.c @@ -364,7 +364,7 @@ static int bdb_tool_next_id( ei = &eidummy; } } - rc = bdb_next_id( op->o_bd, tid, &e->e_id ); + rc = bdb_next_id( op->o_bd, &e->e_id ); if ( rc ) { snprintf( text->bv_val, text->bv_len, "next_id failed: %s (%d)",