]> git.sur5r.net Git - openldap/commitdiff
Cleanup bdb_next_id unused arg
authorHoward Chu <hyc@openldap.org>
Sun, 10 Feb 2008 00:56:44 +0000 (00:56 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 10 Feb 2008 00:56:44 +0000 (00:56 +0000)
servers/slapd/back-bdb/add.c
servers/slapd/back-bdb/nextid.c
servers/slapd/back-bdb/proto-bdb.h
servers/slapd/back-bdb/tools.c

index a6fcfc8bf0a5b4cb65430ab0406080f39bde2570..b10f7d239ee248c7577bf59891f152bf1bfbc642 100644 (file)
@@ -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, &lt2, 
                bdb->bi_db_opflags );
index 2eb6f5b85a6517adaf90ddf12eb24a0a335f3bdb..fe62acb8b5f6e870d27cda11e55dadb3b79d828f 100644 (file)
@@ -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;
 
index 095dee532c6b54c49856b60f7bc9b1ca8479845d..dc5a713e78e6ee025be5e3b2b1d15fb975df0832 100644 (file)
@@ -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 );
 
 /*
index f5051a19de1440e2630f9619f06b20c1875caad4..3583edcb751d29a6b7a33ad05cea7f6f401f809d 100644 (file)
@@ -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)",