Unexpected values in Transitive Vectors with a timestamp counter of 0x1234

  • 7001748
  • 28-Oct-2008
  • 26-Apr-2012

Environment


Novell eDirectory 8.7.3.10 for All Platforms
Novell eDirectory 8.8.2 for All Platforms

Situation

When checking the Transitive Vector for some partitions, some entries show unexpected values, with timestamps that look like this: 06-21-08 6:23:40 am 11:4660.
A few other entries also show this value of 4660 (or 0x1234 in hex) as a last value in the transitive vector entry.
Monitoring this values for a while, it is possible to see that the values are periodically being updated, the timestamp is incremented by approximately one week and the event number still remains as 4660.

Resolution

This is working as designed and it is part of a new functionality added with eDirectory versions 8.7.3.9 ftf3 and 8.8.2.

To explain the rationale behind it, it's necessary first to cover some background information. To start with, the Transitive Vector is, as its name implies, a vector (in other words, an array) of timestamps. There will be one timestamp for each replica number that ever existed for this partition, which means that at the very minimum it will have as many entries as there are in the Replica attribute, but it's possible to have more than that.
A timestamp in eDirectory is composed of three parts: time (expressed in seconds since 1/1/1970), replica number and event number. The event number allows to differentiate different events that have happened within the same second for a particular replica.
In a transitive vector, timestamps for replicas that are not listed in the current Replica attribute are normally referred to as "inactive replica numbers". These numbers are not a problem by themselves, but in some occasions it can happen that events for these replica numbers have timestamps higher than the ones in the Transitive Vectors. This will cause a condition normally called "continuous sync": these attributes will constantly be resent because no active replica is taking care of updating the transitive vectors for them.
To prevent this condition new code was added in the 8.7.3.9 SP3 and 8.8.2 releases of eDirectory. This code schedules a background task that will run once when the dib opens and then once a week and check each partition root on the server, see if there are any inactive replica numbers and if there are, the value of them will be updated with a current timestamp and a default event number of 0x1234 (that is hexadecimal of 4660). This effectively fixes on the fly the condition of continuous sync.

Additional Information

This background process can be traces with Dstrace by enabling the "Purger" flag. At the end of the process, a message like this will be displayed:
 - repairInactiveReplicasInVectors complete %d partitions updated