Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.4.10
-
Linux
Description
How do we eliminate this risk and how do we fix this issue after it happens?
I issued a command to truncate a table, and since it was stuck, I rebooted.
2020-03-27 5:18:17 0 [Warning] RocksDB: Schema mismatch - A .frm file exists for table asterisk.acc, but that table is not registered in RocksDB
2020-03-27 5:18:17 0 [ERROR] RocksDB: Problems validating data dictionary against .frm files, exiting
2020-03-27 5:18:17 0 [ERROR] RocksDB: Failed to initialize DDL manager.
2020-03-27 5:18:17 0 [ERROR] Plugin 'ROCKSDB' init function returned error.
2020-03-27 5:18:17 0 [ERROR] Plugin 'ROCKSDB' registration as a STORAGE ENGINE failed.
2020-03-27 5:18:17 0 [ERROR] Unknown/unsupported storage engine: rocksdb
Attachments
Issue Links
- relates to
-
MDEV-17567 Atomic DDL
-
- Closed
-
philip_38, from the messages it would appear to me that you might be able to work around the problem by deleting the file asterisk/acc.frm from the data directory. Once the server has started up, you should be able to issue CREATE TABLE.
TRUNCATE is a bit special case of a DDL operation, because it will not modify the data dictionary on the SQL layer, or touch the .frm file. Apparently, the problem is that MyRocks will essentially drop the table when it runs out of space. InnoDB could be even worse in such scenarios, ever eager to commit suicide when it encounters a fatal error. In
MDEV-13564I rewrote its TRUNCATE so that the InnoDB in MariaDB will internally rename the table, create a new one, and drop the original table.Could you create a minimal test case for this? It could involve creating a tiny file system on a loopback device. Such a test could also be helpful when we develop
MDEV-17567.