Detecting System Clock Discrepancies — Timewarp
A timewarp (clock skew) occurs when the discrepancy between the system clocks on a client machine and a server machine exceeds the allowable tolerance of 5 seconds. A timewarp can also occur in a replication environment, when the clocks on the master server and a replica server differ by more than 5 seconds. (See Replication of the AccuRev Repository.)
Timewarp problems typically occur during initial system setup and during time zone adjustments. For example, the change from Eastern Standard Time to Eastern Daylight Time can cause a timewarp on a machine that is not configured correctly to handle the time zone adjustment.
For most AccuRev operations, a timewarp check is performed when the client contacts the server, or when a replica server forwards an AccuRev command to the master server.
AccuRev's Timewarp Detection Scheme
Note: In previous releases, AccuRev sometimes performed small system-clock adjustments automatically. Now, AccuRev never adjusts a machine's system clock; it only reports discrepancies.
Each time a client program contacts the server program — or a replica AccuRev Server contacts the master AccuRev Server — AccuRev compares the system clocks on the two machines. If the discrepancy is less than or equal to 5 seconds, AccuRev proceeds to execute the user's command.
If there's a timewarp exceeding 5 seconds between a client machine and a server machine and the user's command specifies the -t option with a time specification (not a transaction number), AccuRev uses the (case-insensitive) value of variable AC_SYNC in the user's environment to determine how to proceed:
If AC_SYNC is unset or has the value ERROR, an error occurs and a message like this appears:
client_time: 2008/07/14 10:54:54 Eastern Standard Time (1216047294)
server_time: 2008/07/14 10:49:56 EDT (1216046996)
timewarp: 298 seconds
The time on this machine is more than 5 seconds different than the
time on the server. Please fix this and try again.
You may have a problem with your system clock.
You can force the time on your system to match the server time
using the accurev synctime command.
If AC_SYNC has the value WARN, no error occurs, but a warning that includes the timewarp details is displayed. Command execution proceeds.
If AC_SYNC has the value IGNORE, no error occurs and no warning is displayed. Command execution proceeds.
Notes on timewarps when a client interacting with a replica server:
A client command that "reads" information from the repository is handled by the replica AccuRev Server; only a timewarp between the client and replica server machines is relevant.
A client command that "writes" information to the repository is handled by the master AccuRev Server; only a timewarp between the client and master server machines is relevant.
If there's a timewarp exceeding 5 seconds between a replica server machine and the master server machine and a client of the replica server invokes the command accurev replica sync, a warning message is recorded in the AccuRev Server log on the replica server machine.