With an RS containing changelogs from 4 domains, it is observed that some changelog searches can cursor through the whole of multiple replicaDBs before choosing the correct replicaDB and quickly finding the UpdateMsg.
This appears to be because the FileReplicaDB.generateCursorFrom() method tries to filter on the startCSN's serverId, ending up passing null to the FileReplicaDBCursor constructor. In FileReplicaDBCursor.next(), this results in us calling nextCSN.compareTo(null), which means the cursor think it is rightly positioned. At the higher level, this translates in the cursor reading and returning all the CSNs from the replicaDB.
We can just pass the original startCSN to the FileReplicaDBCursor constructor, we can initialize the lastNonNullCurrentCSN member to CSN(0, 0, 0). This name will finally truly that it is non-null.