When the file system detects a hardware read error, the AMP that owns the bad data block sends a message to the AMP that stores its fallback data. This message contains the tableID and rowID range of the unreadable data block.
The fallback AMP reads its fallback rows in that range and sends those rows to the requesting AMP. There, the rows are reconstructed as a valid data block that can be used instead of the unreadable data block. The system may be able to repair the damage to the primary data dynamically. If not, attempts to modify rows in the bad data block fail, and the system substitutes an error-free fallback copy of the corrupt rows each time the read error occurs.
To detect all such read errors, the integrity checking level for the table or index must be set to ALL (see Disk I/O Integrity Checking).
Conditions That Support Reading or Repairing Data from Fallback
- Hashed tables.
- Primary join index and USI subtable data blocks.
- Unhashed tables.
- BLOB, CLOB, or XML subtables.
- NUSI subtables, whether their parent table is defined with fallback or not.
- All AMPs in the fallback compute cluster are up.
- Requests do not try to modify the data in the bad data block.