[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#4952) null CSN due to CSN length mismatch in updateCookie



Full_Name: Donn Cave
Version: 2.4.4
OS: Red Hat RHEL 3
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (128.95.135.150)


syncrepl_updateCookie finds CSN values in syncCookie and si->si_cookieState.
Numerically, the syncCookie CSN is lesser, but it compares greater because it's
longer:
syncCookie->ctxcsn: 20070508130333Z#000000#00#000000
si->si_cookieState->cs_vals[0]: 20070507215402.502403Z#000000#000#000000

Eventually slap_queue_csn() gets a null CSN, and slapd aborts.

I am pretty sure the former explains the latter.  The only thing that doesn't
fit is that gdb reports "j" == 20936000, where I expect 0, but I think
everything else adds up - numcsns is 1, cs_num is 1, the two sids are the same
(0). 

Evidently this format difference is entryCSN vs. contextCSN.  The unusual order
may be due to entries modified in the master with explicit entryCSN values.  I
guess that's not supported, but it seems to have exposed a bug here - I assume
you want a comparison between dates, not format lengths.

To reproduce (I'm guessing): modify master directory with explicit entryCSN
values that are later than its contextCSN.