Bug #65297 | InnoDB ignores a possible problem when decompressing blobs | ||
---|---|---|---|
Submitted: | 12 May 2012 19:08 | Modified: | 13 Jun 2012 7:46 |
Reporter: | Nizameddin Ordulu | Email Updates: | |
Status: | No Feedback | Impact on me: | |
Category: | MySQL Server: InnoDB Plugin storage engine | Severity: | S2 (Serious) |
Version: | OS: | Any | |
Assigned to: | CPU Architecture: | Any | |
Tags: | compression, innodb |
[12 May 2012 19:08]
Nizameddin Ordulu
[12 May 2012 19:36]
Marko Mäkelä
Ignoring BLOB read errors is in line with the existing code for uncompressed tables. It is admittedly bad practice. At that time I thought that the existing code was like that on purpose, to allow as complete data recovery as possible when using something innodb_force_recovery Since the initial release of InnoDB Plugin for MySQL 5.1, we have found and fixed many BLOB bugs. I now think that the BLOB code could have used more checks and debug assertions from the beginning. It is also unfortunate that InnoDB originally did not initialize FIL_PAGE_TYPE on other than B-tree pages, and even then, it deferred the initialization until flushing the page to disk. Because of this, for uncompressed tables there is no check that a BLOB pointer is actually pointing to a BLOB page. We have been hitting some BLOB-related bugs internally. One is that the BLOB pointer is pointing not to a first compressed BLOB page (ZBLOB) but to a subsequent compressed BLOB page (ZBLOB2). I have not been able to spend time on narrowing down this bug yet. One possibility is that the server is killed and restarted before btr_free_externally_stored_field() gets fully written to the redo log. Could you be hitting this one? To resolve the problem at hand, can you give some more info, such as the complete 20-byte BLOB reference? Does BTR_EXTERN_LEN make sense? Is the transaction pointed to by DB_TRX_ID still active in trx_sys->trx_list?
[14 Jun 2012 1:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".