From: Kurt Zeilenga Date: Mon, 30 Aug 2004 04:40:16 +0000 (+0000) Subject: CSN, LDAPsync and related fixes X-Git-Tag: OPENLDAP_REL_ENG_2_2_16~23 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5b518e5cc2246c7338303da6f3c30e39303b8ceb;p=openldap CSN, LDAPsync and related fixes --- diff --git a/servers/slapd/back-bdb/ctxcsn.c b/servers/slapd/back-bdb/ctxcsn.c index 7c2b31ec36..1127995de3 100644 --- a/servers/slapd/back-bdb/ctxcsn.c +++ b/servers/slapd/back-bdb/ctxcsn.c @@ -58,6 +58,16 @@ bdb_csn_commit( rc = bdb_dn2entry( op, tid, &op->o_bd->be_context_csn, &ctxcsn_ei, 1, locker, &ctxcsn_lock ); + switch( rc ) { + case 0: + case DB_NOTFOUND: + break; + case DB_LOCK_DEADLOCK: + case DB_LOCK_NOTGRANTED: + return BDB_CSN_RETRY; + default: + return BDB_CSN_ABORT; + } *ctxcsn_e = ctxcsn_ei->bei_e; diff --git a/servers/slapd/back-bdb/id2entry.c b/servers/slapd/back-bdb/id2entry.c index 2635e1d424..05501b0e42 100644 --- a/servers/slapd/back-bdb/id2entry.c +++ b/servers/slapd/back-bdb/id2entry.c @@ -386,6 +386,7 @@ return_results: if ( op && !boi ) { boi = op->o_tmpcalloc(1,sizeof(struct bdb_op_info),op->o_tmpmemctx); boi->boi_lock = lock; + boi->boi_bdb = op->o_bd; op->o_private = boi; } diff --git a/servers/slapd/back-bdb/search.c b/servers/slapd/back-bdb/search.c index 5090c695f0..b3298840bd 100644 --- a/servers/slapd/back-bdb/search.c +++ b/servers/slapd/back-bdb/search.c @@ -532,7 +532,7 @@ bdb_do_search( Operation *op, SlapReply *rs, Operation *sop, } } - if ( opinfo ) { + if ( opinfo && opinfo->boi_txn ) { ltid = opinfo->boi_txn; locker = TXN_ID( ltid ); } else {