There are (at least as far as I know) no other way than slapcat/slapadd to get rid of any incorrect contextCSN values, at least on servers where syncprov is enabled. I have been down that road some times already, each time being equally annoyed by the fact that there are no easier way to fix it..
Removing a contextCSN value is required in order to remove a server from a multi-master configuration, or to get rid of the values with SID=0 that is far to easy to slip in if slapd or slapadd is started without the proper serverID setting.
The slapd -c option requires a rid=XXX to be specified, but also allows sid=XXX (which I haven't quite understood the usefulness of..). I suggest that the -c option is extended to also allow only sid=XXX without any rid.
With only sid=XXX,csn=XXX specified both syncrepl and syncprov should replace the contextCSN value with that sid (as read from the database upon startup) with the specified csn. Obviously, only a single csn value can be accepted, and an absent or zero csn value should mean to delete the contextCSN value with that sid. Well, deleting a contextCSN value is really all I need, so I would be I more than happy to leave the replace possibility out...
Adding an easy way to get rid of invalid contextCSN values should make a transition to enforcing serverID 0 for single-master only configs much more acceptable for those that have used serverID 0 in multi-master setups.
Comments?
Rein