mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-31 19:09:42 -05:00
ITS#8801 Fix CSN queue processing
This commit is contained in:
parent
4d1077ffa4
commit
0c1ebd178c
3 changed files with 6 additions and 12 deletions
|
|
@ -57,7 +57,7 @@ slap_get_commit_csn(
|
|||
ldap_pvt_thread_mutex_lock( &be->be_pcl_mutex );
|
||||
|
||||
LDAP_TAILQ_FOREACH( csne, be->be_pending_csn_list, ce_csn_link ) {
|
||||
if ( csne->ce_opid == op->o_opid && csne->ce_connid == op->o_connid ) {
|
||||
if ( csne->ce_op == op ) {
|
||||
csne->ce_state = SLAP_CSN_COMMIT;
|
||||
if ( foundit ) *foundit = 1;
|
||||
break;
|
||||
|
|
@ -94,7 +94,7 @@ slap_rewind_commit_csn( Operation *op )
|
|||
ldap_pvt_thread_mutex_lock( &be->be_pcl_mutex );
|
||||
|
||||
LDAP_TAILQ_FOREACH( csne, be->be_pending_csn_list, ce_csn_link ) {
|
||||
if ( csne->ce_opid == op->o_opid && csne->ce_connid == op->o_connid ) {
|
||||
if ( csne->ce_op == op ) {
|
||||
csne->ce_state = SLAP_CSN_PENDING;
|
||||
break;
|
||||
}
|
||||
|
|
@ -116,7 +116,7 @@ slap_graduate_commit_csn( Operation *op )
|
|||
ldap_pvt_thread_mutex_lock( &be->be_pcl_mutex );
|
||||
|
||||
LDAP_TAILQ_FOREACH( csne, be->be_pending_csn_list, ce_csn_link ) {
|
||||
if ( csne->ce_opid == op->o_opid && csne->ce_connid == op->o_connid ) {
|
||||
if ( csne->ce_op == op ) {
|
||||
LDAP_TAILQ_REMOVE( be->be_pending_csn_list,
|
||||
csne, ce_csn_link );
|
||||
Debug( LDAP_DEBUG_SYNC, "slap_graduate_commit_csn: removing %p %s\n",
|
||||
|
|
@ -191,8 +191,7 @@ slap_queue_csn(
|
|||
ber_dupbv( &pending->ce_csn, csn );
|
||||
ber_bvreplace_x( &op->o_csn, &pending->ce_csn, op->o_tmpmemctx );
|
||||
pending->ce_sid = slap_parse_csn_sid( csn );
|
||||
pending->ce_connid = op->o_connid;
|
||||
pending->ce_opid = op->o_opid;
|
||||
pending->ce_op = op;
|
||||
pending->ce_state = SLAP_CSN_PENDING;
|
||||
|
||||
ldap_pvt_thread_mutex_lock( &be->be_pcl_mutex );
|
||||
|
|
|
|||
|
|
@ -1458,7 +1458,7 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
|
|||
Modifications *m;
|
||||
struct berval *b, uuid = BER_BVNULL;
|
||||
int i;
|
||||
int logop, do_graduate = 0;
|
||||
int logop;
|
||||
slap_verbmasks *lo;
|
||||
Entry *e = NULL, *old = NULL, *e_uuid = NULL;
|
||||
char timebuf[LDAP_LUTIL_GENTIME_BUFSIZE+8];
|
||||
|
|
@ -1872,7 +1872,6 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
|
|||
slap_get_commit_csn( op, &maxcsn, &foundit );
|
||||
if ( !BER_BVISEMPTY( &maxcsn ) ) {
|
||||
slap_queue_csn( &op2, &op->o_csn );
|
||||
do_graduate = 1;
|
||||
} else {
|
||||
attr_merge_normalize_one( e, slap_schema.si_ad_entryCSN,
|
||||
&op->o_csn, op->o_tmpmemctx );
|
||||
|
|
@ -1882,9 +1881,6 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
|
|||
op2.o_bd->be_add( &op2, &rs2 );
|
||||
if ( e == op2.ora_e ) entry_free( e );
|
||||
e = NULL;
|
||||
if ( do_graduate ) {
|
||||
slap_graduate_commit_csn( &op2 );
|
||||
}
|
||||
|
||||
done:
|
||||
if ( lo->mask & LOG_OP_WRITES )
|
||||
|
|
|
|||
|
|
@ -2463,10 +2463,9 @@ typedef struct PagedResultsState {
|
|||
} PagedResultsState;
|
||||
|
||||
struct slap_csn_entry {
|
||||
Operation *ce_op;
|
||||
struct berval ce_csn;
|
||||
int ce_sid;
|
||||
unsigned long ce_opid;
|
||||
unsigned long ce_connid;
|
||||
#define SLAP_CSN_PENDING 1
|
||||
#define SLAP_CSN_COMMIT 2
|
||||
long ce_state;
|
||||
|
|
|
|||
Loading…
Reference in a new issue