-
Type:
Bug
-
Status: Done
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 4.0.0
-
Fix Version/s: 6.5.0
-
Component/s: replication
-
Labels:
-
Epic Link:
-
Story Points:1
-
Support Ticket IDs:
-
Backports:
The customer reports that a changelog search of:
(&(objectClass=*)(changeNumber>=1983470)(changeNumber<=1983472)))
which should return 3 changes, only returns the 1983470 and 1983472 changes. However, this changelog search:
&(objectclass=*)(changeNumber=1983471))
returns the missing change.
Adding some custom debug code to ChangelogBackend.findReplicaUpdateMessage() shows that we call the method with 3 different CSNs, but for the second CSN the replicaUpdatesCursor seems to look at the wrong database.
method={findReplicaUpdateMessage(ChangelogBackend.java:1094)} starts for 00000160702b92cb187400002365 (6260) method={findReplicaUpdateMessage(ChangelogBackend.java:1112)} ends after 1 searching {6260=1} with found for 00000160702b92cb187400002365 method={findReplicaUpdateMessage(ChangelogBackend.java:1094)} starts for 00000160702b92c92d7a000046f6 (11642) method={findReplicaUpdateMessage(ChangelogBackend.java:1105)} ends after 1 searching {6260=1} with null for 00000160702b92c92d7a000046f6 method={findReplicaUpdateMessage(ChangelogBackend.java:1094)} starts for 00000160702b92cb187400002366 (6260) method={findReplicaUpdateMessage(ChangelogBackend.java:1112)} ends after 1 searching {6260=1} with found for 00000160702b92cb187400002366
The return "with null" is this case in findReplicaUpdateMessage():
if (compareIndexWithUpdateMsg < 0) { // Either update message has been purged or baseDN has been removed from changelogDB, // ignore current index record and go to the next one return null;
- is backported by
-
OPENDJ-6445 Backport OPENDJ-4625: Changelog range searches miss entries
-
- Done
-
- is related to
-
OPENDJ-4983 IllegalStateException in change number indexer
-
- Done
-
- relates to
-
OPENDJ-5057 Replication: IllegalStateException when disconnecting/reconnecting RSs
-
- Done
-