mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
MDEV-13153: Assertion ... failed on partitioned RocksDB table
ha_partition creates temporary ha_XXX objects for its partitions when performing DDL operations. The objects were created on a MEM_ROOT and never deleted. This works as long as ha_XXX objects free all data ha_XXX::close() and don't rely on a proper destructor invocation. Unfortunately, ha_rocksdb includes String members which need to be delete'd properly. Fixed the bug by having ha_partition::~ha_partition delete these temporary objects.
This commit is contained in:
@@ -413,8 +413,12 @@ ha_partition::~ha_partition()
|
||||
destroy_record_priority_queue();
|
||||
my_free(m_part_ids_sorted_by_num_of_records);
|
||||
|
||||
if (m_added_file)
|
||||
{
|
||||
for (handler **ph= m_added_file; *ph; ph++)
|
||||
delete (*ph);
|
||||
}
|
||||
clear_handler_file();
|
||||
|
||||
free_root(&m_mem_root, MYF(0));
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
@@ -121,3 +121,14 @@ t2
|
||||
DROP TABLE t2;
|
||||
use test;
|
||||
DROP DATABASE db3;
|
||||
#
|
||||
# MDEV-13153 Assertion `global_status_var.global_memory_used == 0 '
|
||||
# failed upon server restart with partitioned RocksDB table
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=RocksDB PARTITION BY HASH(a) PARTITIONS 2;
|
||||
INSERT INTO t1 (a) VALUES (1),(2);
|
||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -120,3 +120,14 @@ DROP TABLE t2;
|
||||
use test;
|
||||
DROP DATABASE db3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13153 Assertion `global_status_var.global_memory_used == 0 '
|
||||
--echo # failed upon server restart with partitioned RocksDB table
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT) ENGINE=RocksDB PARTITION BY HASH(a) PARTITIONS 2;
|
||||
INSERT INTO t1 (a) VALUES (1),(2);
|
||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||
--source include/restart_mysqld.inc
|
||||
SELECT 1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user