Volgnummer probleempje in IBM Notes

Een klant had een raar probleem. Een database waar documenten een volgnummer kregen bij het aanmaken, bleek ineens dubbele nummers te krijgen.
Waar de nummering eerder nog iets in de 18 miljoen was, begon het ineens weer met 16.877.210. En dat herhaalde zich een paar keer.
Na inspectie van de code bleek de teller bijgehouden te worden in een document. Niet ongebruikelijk, de code klopte ook, en werkte nog steeds goed.
Maar deze database had ook een replica. Ondanks dat de teller slechts in een database werd gebruikt leek Notes bij het repliceren toch telkens overtuigd dat de replica met het oudere teller document nieuwer was dan de bron database, die wel degelijk nieuwer was.

Na controle van het replica id hadden we het over het volgnummer dat Notes gebruikt om samen met de datum te bepalen welk document in een replica nieuwer is.
Een collega Notes specialist die goed met cijfers is zag direct wat het was: de nummering in het volgnummer (sequence number) kan bestaan uit maximaal FFFFFF. Dit is gelijk aan 16.777.215, en daarna begint het tellen weer bij 0.

In ons geval was het nummer in de originele database dus over de FFFFFF heen gegaan, en had daarmee een lager nummer gekregen dan het replica document, waardoor telkens bij het repliceren het oudere document weer terug werd gerepliceerd waardoor ook de teller voor de documenten weer lager was.

Door een nieuw teller document aan te maken was het probleem weer opgelost, maar dit was wel de eerste keer dat ik dit zag in een Notes database.

Leuk die theorie, maar waarom staat het volgnummer bij een nieuw document dan op 00000001 (8 posities), wat in mijn ogen aangeeft dat het tot FFFFFFFF (4.294.967.295) kan gaan en niet tot FFFFFF?
Dat antwoord kan ik helaas (nog) niet geven, maar een korte test met een code loopje gaf uitsluitsel, na 00FFFFFF begon het nummer weer met 00000001. Of dit een bug is of een bewuste keuze durf ik niet te zeggen.

Even wat uitleg over het sequence number:

Als database A een document bevat met een bepaalde UNID en database B bevat een document met het zelfde UNID, zal de replicator concluderen dat deze twee documenten replica kopieën van elkaar zijn.
In dat geval, gaat de replicator verder met het volgnummer en sequentietijd van de twee documenten te onderzoeken.
Als het volgnummer en de tijd van aanpassing het zelfde zijn voor beide documenten , dan is er volgens de replicator geen actie vereist omdat de documenten gelijk zijn aan elkaar.
Aan de andere kant, als een van beide, het volgnummer of de tijd van aanpassing, of beide, verschillen tussen de twee documenten, dan moet de replicator beslissen welke recenter is en het oudere document actualiseren met de inhoud van de meest recente versie.

Als een document is bijgewerkt maar het andere document niet, wordt het sequentienummer van het eerste document groter dan die van het andere document.
De replicator behandelt deze zaak door het overschrijven van het andere document met de eerste, waardoor de twee databases weer synchroon zijn.

Universal Note ID (UNID)=
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

Sequence Time =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

Sequence Number =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

De overige regels zijn:
Originator ID (OID) =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

OID.File =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

OID.Note =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

Global Note ID (GNID) =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

Database ID (GNID.File) =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT<00096E86

Note ID (GNID.NoteID) =
OF162EE8B9:66439054
ON2BAE1447:A7A43567
SDC1257F8F:0067AAFF-SN00000001
DBC1257738:002ED95E
NT00096E86

Geplaatst in Beheer, Domino en getagd met , , , , .