mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Don't need TXN/opinfo support in read-only operations
This commit is contained in:
parent
bda79780ce
commit
00837465c4
@ -29,63 +29,17 @@ bdb_hasSubordinates(
|
||||
{
|
||||
struct bdb_info *bdb = (struct bdb_info *) be->be_private;
|
||||
int rc;
|
||||
DB_TXN *ltid = NULL;
|
||||
struct bdb_op_info opinfo;
|
||||
|
||||
assert( e );
|
||||
assert( hasSubordinates );
|
||||
|
||||
if( 0 ) {
|
||||
retry: /* transaction retry */
|
||||
#if 0
|
||||
if( e != NULL ) {
|
||||
bdb_unlocked_cache_return_entry_w(&bdb->bi_cache, e);
|
||||
}
|
||||
#endif
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG ( OPERATION, DETAIL1,
|
||||
"=> bdb_hasSubordinates: retrying...\n", 0, 0, 0 );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_TRACE, "==> bdb_hasSubordinates: retrying...\n",
|
||||
0, 0, 0 );
|
||||
#endif
|
||||
rc = TXN_ABORT( ltid );
|
||||
ltid = NULL;
|
||||
op->o_private = NULL;
|
||||
if( rc != 0 ) {
|
||||
rc = LDAP_OTHER;
|
||||
goto return_results;
|
||||
}
|
||||
ldap_pvt_thread_yield();
|
||||
}
|
||||
|
||||
/* begin transaction */
|
||||
rc = TXN_BEGIN( bdb->bi_dbenv, NULL, <id, bdb->bi_db_opflags );
|
||||
if ( rc != 0 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG ( OPERATION, ERR,
|
||||
"=> bdb_hasSubordinates: txn_begin failed: %s (%d)\n",
|
||||
db_strerror(rc), rc, 0 );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"bdb_hasSubordinates: txn_begin failed: %s (%d)\n",
|
||||
db_strerror( rc ), rc, 0 );
|
||||
#endif
|
||||
rc = LDAP_OTHER;
|
||||
return rc;
|
||||
}
|
||||
|
||||
opinfo.boi_bdb = be;
|
||||
opinfo.boi_txn = ltid;
|
||||
opinfo.boi_locker = TXN_ID ( ltid );
|
||||
opinfo.boi_err = 0;
|
||||
op->o_private = &opinfo;
|
||||
|
||||
rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 );
|
||||
retry:
|
||||
rc = bdb_dn2id_children( be, NULL, &e->e_nname, 0 );
|
||||
|
||||
switch( rc ) {
|
||||
case DB_LOCK_DEADLOCK:
|
||||
case DB_LOCK_NOTGRANTED:
|
||||
ldap_pvt_thread_yield();
|
||||
goto retry;
|
||||
|
||||
case 0:
|
||||
@ -110,18 +64,6 @@ retry: /* transaction retry */
|
||||
rc = LDAP_OTHER;
|
||||
}
|
||||
|
||||
return_results:
|
||||
if ( rc == LDAP_SUCCESS && bdb->bi_txn_cp ) {
|
||||
ldap_pvt_thread_yield();
|
||||
TXN_CHECKPOINT( bdb->bi_dbenv,
|
||||
bdb->bi_txn_cp_kbyte, bdb->bi_txn_cp_min, 0 );
|
||||
}
|
||||
|
||||
if ( ltid != NULL ) {
|
||||
TXN_ABORT( ltid );
|
||||
op->o_private = NULL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,6 @@ bdb_search(
|
||||
|
||||
u_int32_t locker = 0;
|
||||
DB_LOCK lock;
|
||||
struct bdb_op_info opinfo;
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG ( OPERATION, ENTRY, "bdb_back_search\n", 0, 0, 0 );
|
||||
@ -136,12 +135,6 @@ bdb_search(
|
||||
return rc;
|
||||
}
|
||||
|
||||
opinfo.boi_bdb = be;
|
||||
opinfo.boi_txn = NULL;
|
||||
opinfo.boi_locker = locker;
|
||||
opinfo.boi_err = 0;
|
||||
op->o_private = &opinfo;
|
||||
|
||||
if ( nbase->bv_len == 0 ) {
|
||||
/* DIT root special case */
|
||||
e = (Entry *) &slap_entry_root;
|
||||
|
Loading…
Reference in New Issue
Block a user