s_hira@nifty.com wrote:
Full_Name: HIRABAYASHI Satoshi Version: v2.4.30 OS: URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (221.250.200.130)
I confirmed the problem that was not deleted in syncrepl of V2.4.30.
Thanks for the report, fixed now in git master.
The provider operates it in "syncprov-sessionlog 100". After I delete 150 in a provider, and going syncrepl Only 100 cases are deleted in the consumer side.
After examining it, the following parts seem to have a problem.
servers/slapd/overlays/syncprov.c:2638 if ( sl->sl_num> 0 ) { int i; for ( i=0; i<sl->sl_numcsns; i++ ) { /* SID not present == new enough */ if ( minsid< sl->sl_sids[i] ) { do_play = 1; break; } /* SID present and new enough */ if ( minsid == sl->sl_sids[i] && ber_bvcmp(&mincsn,&sl->sl_mincsn[i] )>= 0 ) { do_play = 1; break; } } /* SID not present == new enough */ if ( i == sl->sl_numcsns ) do_play = 1; } if ( do_play ) { do_present = 0; /* mutex is unlocked in playlog */ syncprov_playlog( op, rs, sl, srs, ctxcsn, numcsns, sids ); } else { ldap_pvt_thread_mutex_unlock(&sl->sl_mutex ); }
Then, it corrected as follows.
if ( minsid == sl->sl_sids[i]
-&& ber_bvcmp(&mincsn,&sl->sl_mincsn[i] )>= 0 ) {
if ( minsid == sl->sl_sids[i] ) {
if ( ber_bvcmp(&mincsn,&sl->sl_mincsn[i] )>= 0 ) { do_play = 1;
} break; }
Is this correction wrong?
HIRABAYASHI Satoshi s_hira@nifty.com