Product Documentation

c-treeACE V10.0 Release Notes

Previous Topic

Next Topic

Prevent READ_ERR during Replication Log Reads

A READ_ERR (36) could be returned by the ctReplGetNextChange() API call, and a message such as the following found in CTSTATUS.FCS:

"Checksum failure at code location"

This error was possible when all of the following conditions were true:

  • When reading the last entry of the transaction log
  • The log entry header has been flushed, however, the two byte checksum had not yet been fully flushed.
  • ctReplGetNextChange() specified a zero (ctNOWAIT) timeout.

When reading the log entry header no test of the checksum was made. When a timeout value was non-zero, a check was made that the checksum had been flushed, and if not, an NTIM_ERR was returned. When a timeout value was zero, no check was made that the checksum was on disk, the next call read the checksum, however, since it has not been flushed, it was 0xFF on disk. This caused the checksum test to fail and READ_ERR to be returned. A check is now always made at least once that the checksum is on disk, regardless of the timeout value preventing this error.

TOCIndex