Checkpoints Corruption Detection
Although a rare situation, it may happen for one reason or another that a checkpoint gets corrupted. Fulfillment Provisioning provides two levels for detecting these corruptions.
The first level takes the assumption that the backend ensures checkpoints integrity. At this level, only minimum checks are performed by Fulfillment Provisioning in order to provide the highest performance and robustness. This level is enabled when the checkpoint is configured with crcMethod set to CRCNone (which is the default).
The second level takes the assumption that the backend cannot ensure the checkpoints integrity. At this level, the checkpoint framework will associate metadata containing a data checksum to each checkpoint. This checksum will be computed when the checkpoint is written and validated when the checkpoint is read. The confidence in the algorithm computing the checksum is quite high, but this method has a negative impact on performance (expect read/write accesses to be 30% slower). This level is enabled when the checkpoint is configured with crcMethod set to CRC32 (32 bits CRC algorithm).
When recovering or migrating checkpoints, if a corruption is found on a checkpoint, the corruption is logged in the application and the checkpoint is renamed to a specific pattern allowing administrators to eventually analyze the corruption. This pattern is defined by the enabled checkpoint backend.