Skip to content

Commit cac3603

Browse files
reidHoruffGunnar Kudrjavets
authored andcommitted
Add drop indexes to information_schema
Summary: Add drop indexes to information_schema Test Plan: mysql-test/suite/rocksdb/t/information_schema.test mysql-test/suite/rocksdb_sys_vars/t/rocksdb_pause_background_work_basic.test Reviewers: jkedgar, hermanlee4 Reviewed By: hermanlee4 Subscribers: webscalesql-eng Differential Revision: https://reviews.facebook.net/D50457
1 parent 0141de3 commit cac3603

File tree

3 files changed

+57
-2
lines changed

3 files changed

+57
-2
lines changed

storage/rocksdb/ha_rocksdb.cc

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,28 @@ rocksdb_drop_index_wakeup_thread(THD* thd,
211211
}
212212
}
213213

214+
static my_bool rocksdb_pause_background_work = 0;
215+
static mysql_mutex_t pause_background_work_mutex;
216+
217+
static void
218+
rocksdb_set_pause_background_work(THD* thd,
219+
struct st_mysql_sys_var* var,
220+
void* var_ptr,
221+
const void* save)
222+
{
223+
mysql_mutex_lock(&pause_background_work_mutex);
224+
bool pause_requested = *static_cast<const bool*>(save);
225+
if (rocksdb_pause_background_work != pause_requested) {
226+
if (pause_requested) {
227+
rdb->PauseBackgroundWork();
228+
} else {
229+
rdb->ContinueBackgroundWork();
230+
}
231+
rocksdb_pause_background_work = pause_requested;
232+
}
233+
mysql_mutex_unlock(&pause_background_work_mutex);
234+
}
235+
214236
static void
215237
set_compaction_options(THD* thd,
216238
struct st_mysql_sys_var* var,
@@ -679,6 +701,12 @@ static MYSQL_SYSVAR_BOOL(signal_drop_index_thread,
679701
"Wake up drop index thread",
680702
NULL, rocksdb_drop_index_wakeup_thread, FALSE);
681703

704+
static MYSQL_SYSVAR_BOOL(pause_background_work,
705+
rocksdb_pause_background_work,
706+
PLUGIN_VAR_RQCMDARG,
707+
"Disable all rocksdb background operations",
708+
nullptr, rocksdb_set_pause_background_work, FALSE);
709+
682710
static MYSQL_SYSVAR_BOOL(strict_collation_check,
683711
rocksdb_strict_collation_check,
684712
PLUGIN_VAR_RQCMDARG,
@@ -840,6 +868,7 @@ static struct st_mysql_sys_var* rocksdb_system_variables[]= {
840868

841869
MYSQL_SYSVAR(compact_cf),
842870
MYSQL_SYSVAR(signal_drop_index_thread),
871+
MYSQL_SYSVAR(pause_background_work),
843872
MYSQL_SYSVAR(strict_collation_check),
844873
MYSQL_SYSVAR(strict_collation_exceptions),
845874
MYSQL_SYSVAR(collect_sst_properties),
@@ -906,7 +935,8 @@ static PSI_stage_info *all_rocksdb_stages[]=
906935
static PSI_mutex_key ex_key_mutex_example, ex_key_mutex_ROCKSDB_SHARE_mutex,
907936
key_mutex_background, key_mutex_stop_background,
908937
key_mutex_drop_index, key_drop_index_interrupt_mutex,
909-
key_mutex_snapshot, key_mutex_collation_exception_list;
938+
key_mutex_snapshot, key_mutex_collation_exception_list,
939+
key_mutex_pause_background_work;
910940

911941
static PSI_mutex_info all_rocksdb_mutexes[]=
912942
{
@@ -919,6 +949,7 @@ static PSI_mutex_info all_rocksdb_mutexes[]=
919949
{ &key_mutex_snapshot, "snapshot", PSI_FLAG_GLOBAL},
920950
{ &key_mutex_collation_exception_list, "collation_exception_list",
921951
PSI_FLAG_GLOBAL},
952+
{ &key_mutex_pause_background_work, "pause background work", PSI_FLAG_GLOBAL},
922953
};
923954

924955
PSI_cond_key key_cond_stop, key_drop_index_interrupt_cond;
@@ -1919,6 +1950,8 @@ static int rocksdb_init_func(void *p)
19191950
mysql_mutex_init(key_mutex_snapshot, &snapshot_mutex, MY_MUTEX_INIT_FAST);
19201951
mysql_mutex_init(key_mutex_collation_exception_list,
19211952
&collation_exception_list_mutex, MY_MUTEX_INIT_FAST);
1953+
mysql_mutex_init(key_mutex_pause_background_work,
1954+
&pause_background_work_mutex, MY_MUTEX_INIT_FAST);
19221955
mysql_cond_init(key_cond_stop, &stop_cond, NULL);
19231956
(void) my_hash_init(&rocksdb_open_tables,system_charset_info,32,0,0,
19241957
(my_hash_get_key) rocksdb_get_key,0,0);
@@ -1947,6 +1980,8 @@ static int rocksdb_init_func(void *p)
19471980
HTON_CAN_RECREATE;
19481981

19491982
mysql_mutex_init(key_mutex_drop_index, &drop_index_mutex, MY_MUTEX_INIT_FAST);
1983+
mysql_mutex_init(key_drop_index_interrupt_mutex, &drop_index_interrupt_mutex,
1984+
MY_MUTEX_INIT_FAST);
19501985
mysql_mutex_init(key_drop_index_interrupt_mutex, &drop_index_interrupt_mutex,
19511986
MY_MUTEX_INIT_FAST);
19521987
mysql_cond_init(key_drop_index_interrupt_cond, &drop_index_interrupt_cond, NULL);
@@ -2148,6 +2183,10 @@ static int rocksdb_init_func(void *p)
21482183

21492184
collation_exception_list = split(rocksdb_strict_collation_exceptions, ',');
21502185

2186+
if (rocksdb_pause_background_work) {
2187+
rdb->PauseBackgroundWork();
2188+
}
2189+
21512190
sql_print_information("RocksDB instance opened");
21522191
DBUG_RETURN(0);
21532192
}
@@ -2186,6 +2225,7 @@ static int rocksdb_done_func(void *p)
21862225
mysql_mutex_destroy(&collation_exception_list_mutex);
21872226
mysql_mutex_destroy(&snapshot_mutex);
21882227
mysql_mutex_destroy(&rocksdb_mutex);
2228+
mysql_mutex_destroy(&pause_background_work_mutex);
21892229

21902230
ddl_manager.cleanup();
21912231
binlog_manager.cleanup();

storage/rocksdb/rdb_datadic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ class Binlog_info_manager
765765
key: RDBSE_KEYDEF::BINLOG_INFO_INDEX_NUMBER (0x4)
766766
value: version, {binlog_name,binlog_pos,binlog_gtid}
767767
768-
5. Ongoing drop index entry (not implemented yet)
768+
5. Ongoing drop index entry
769769
key: RDBSE_KEYDEF::DDL_DROP_INDEX_ONGOING(0x5) + cf_id + index_id
770770
value: version
771771

storage/rocksdb/rdb_i_s.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,7 @@ static int i_s_rocksdb_global_info_fill_table(THD *thd,
633633
DBUG_ENTER("i_s_rocksdb_global_info_fill_table");
634634
static const uint32_t INT_BUF_LEN = 21;
635635
static const uint32_t GTID_BUF_LEN = 60;
636+
static const uint32_t CF_ID_INDEX_BUF_LEN = 60;
636637

637638
int ret= 0;
638639

@@ -678,6 +679,20 @@ static int i_s_rocksdb_global_info_fill_table(THD *thd,
678679
break;
679680
}
680681

682+
/* DDL_DROP_INDEX_ONGOING */
683+
std::vector<GL_INDEX_ID> gl_index_ids;
684+
dict_manager->get_drop_indexes_ongoing(&gl_index_ids);
685+
char cf_id_index_buf[CF_ID_INDEX_BUF_LEN]= {0};
686+
for (auto gl_index_id : gl_index_ids) {
687+
snprintf(cf_id_index_buf, CF_ID_INDEX_BUF_LEN, "cf_id:%u,index_id:%u",
688+
gl_index_id.cf_id, gl_index_id.index_id);
689+
ret |= global_info_fill_row(thd, tables, "DDL_DROP_INDEX_ONGOING",
690+
cf_id_index_buf, "");
691+
692+
if (ret)
693+
break;
694+
}
695+
681696
DBUG_RETURN(ret);
682697
}
683698

0 commit comments

Comments
 (0)