Commit 0c1ebd17 authored by Howard Chu's avatar Howard Chu
Browse files

ITS#8801 Fix CSN queue processing

parent 4d1077ff
......@@ -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;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment