Description:
InnoDB write failures can be encountered due to the underlying file system’s file size limits.
InnoDB logs warnings and error codes (MY-012640 Error number 27 means ‘File too large’), sets an internal tablespace full flag, and may roll back some transactions. However, further modification attempts (inserts/updates) to affected tables will keep failing until administrative action is taken.
For instance, while attempting to write data to the .ibd tablespace file that exceeds file system constraints, the operation fails.
The current InnoDB engine responds by logging the error, but new transactions continue to be accepted and retried, resulting in user disruption, potential data integrity concerns, and soft block corruption in file.
Add proactive monitoring for InnoDB tablespaces by emitting warnings when they approach configured size limits. This feature is specific to InnoDB storage engine and does not affect other storage engines like MyISAM.
How to repeat:
-- 1. Create a table with InnoDB engine
CREATE TABLE t1 (
id INT AUTO_INCREMENT PRIMARY KEY,
data LONGBLOB
) ENGINE=InnoDB;
-- 2. Insert data until the tablespace file (.ibd) approaches or exceeds
-- the underlying file system's file size limit (e.g., on a filesystem
-- with a small file size cap, or by setting innodb_data_file_path to
-- a constrained size for the system tablespace).
-- For example, repeatedly insert ~1MB rows:
INSERT INTO t1 (data) VALUES (REPEAT('a', 1024*1024));
-- ... repeat until the .ibd file hits the filesystem limit ...
-- 3. Observe: InnoDB logs "Error number 27 means 'File too large'" (MY-012640),
-- sets an internal tablespace-full flag, and may roll back the transaction.
-- However, subsequent INSERT/UPDATE attempts against the same table continue
-- to be accepted, retried, and fail — with no proactive warning before
-- the limit is reached.
-- 4. There is currently no mechanism to:
-- a) Warn when a tablespace is *approaching* a configured size threshold
-- (e.g., at 70% or 80% of a limit), before writes start failing.
-- b) Disable/enable such warnings at runtime (an "andon cord" toggle).
-- c) Reset the warning state after administrative action (e.g., TRUNCATE TABLE).
Suggested fix:
Add proactive monitoring for InnoDB tablespaces by emitting warnings when they approach configured size limits. This feature is specific to InnoDB storage engine and does not affect other storage engines like MyISAM.
Description: InnoDB write failures can be encountered due to the underlying file system’s file size limits. InnoDB logs warnings and error codes (MY-012640 Error number 27 means ‘File too large’), sets an internal tablespace full flag, and may roll back some transactions. However, further modification attempts (inserts/updates) to affected tables will keep failing until administrative action is taken. For instance, while attempting to write data to the .ibd tablespace file that exceeds file system constraints, the operation fails. The current InnoDB engine responds by logging the error, but new transactions continue to be accepted and retried, resulting in user disruption, potential data integrity concerns, and soft block corruption in file. Add proactive monitoring for InnoDB tablespaces by emitting warnings when they approach configured size limits. This feature is specific to InnoDB storage engine and does not affect other storage engines like MyISAM. How to repeat: -- 1. Create a table with InnoDB engine CREATE TABLE t1 ( id INT AUTO_INCREMENT PRIMARY KEY, data LONGBLOB ) ENGINE=InnoDB; -- 2. Insert data until the tablespace file (.ibd) approaches or exceeds -- the underlying file system's file size limit (e.g., on a filesystem -- with a small file size cap, or by setting innodb_data_file_path to -- a constrained size for the system tablespace). -- For example, repeatedly insert ~1MB rows: INSERT INTO t1 (data) VALUES (REPEAT('a', 1024*1024)); -- ... repeat until the .ibd file hits the filesystem limit ... -- 3. Observe: InnoDB logs "Error number 27 means 'File too large'" (MY-012640), -- sets an internal tablespace-full flag, and may roll back the transaction. -- However, subsequent INSERT/UPDATE attempts against the same table continue -- to be accepted, retried, and fail — with no proactive warning before -- the limit is reached. -- 4. There is currently no mechanism to: -- a) Warn when a tablespace is *approaching* a configured size threshold -- (e.g., at 70% or 80% of a limit), before writes start failing. -- b) Disable/enable such warnings at runtime (an "andon cord" toggle). -- c) Reset the warning state after administrative action (e.g., TRUNCATE TABLE). Suggested fix: Add proactive monitoring for InnoDB tablespaces by emitting warnings when they approach configured size limits. This feature is specific to InnoDB storage engine and does not affect other storage engines like MyISAM.