OPENDJ-2476 resolution, some track to simplify code and, as such, simplifying maintenance has been found.
1 - Matching & Positioning strategy: The matching strategy specify the way a key must be matched (currently: equals, greater than or equal, less than or equal) while positioning strategy specify the position of the cursor regarding the matching key (currently: matching_key: the cursor is positioned on the matching key, after_matching_key: the cursor is positioned on the key after the matching key only if the matching key is equals to the supplied key). This gives a 3 * 2 possibility matrix where only few are actually used (see https://wikis.forgerock.org/confluence/display/OPENDJ/Changelog+Cursors).
The idea here is to remove the positioning strategy and adding a "strictly greater than" matching strategy which will position the cursor on the first key greater than the supplied one.
2 - File renaming: There is some complexity implied by the maintenance of the log file naming format: multiple log files named like firstcsn_lastcsn and the last/current one named head.log. Problem is that head.log have to be renamed to follow the firstcsn_lastcsn.log format once it's full. This renaming process imply to abort pending cursors while the renaming is done to re-open those once the renaming is performed.
The idea to simplify here is to remove the renaming process by changing the naming format to firstcsn.log. Since named file doesn't contains lastcsn we don't have to wait the file to be full to be renamed into firstcsn_lastcsn.log. This remove the need of head.log and the complex renaming process.