@@ -125,6 +125,7 @@ void maria_chk_init(HA_CHECK *param)
125
125
param -> max_stage = 1 ;
126
126
param -> stack_end_ptr = & my_thread_var -> stack_ends_here ;
127
127
param -> max_allowed_lsn = (LSN ) ~0ULL ;
128
+ /* Flag when initializing buffers possible used by parallel repair threads */
128
129
param -> malloc_flags = MY_THREAD_SPECIFIC ;
129
130
}
130
131
@@ -2130,7 +2131,7 @@ int maria_chk_data_link(HA_CHECK *param, MARIA_HA *info, my_bool extend)
2130
2131
2131
2132
if (!(record = (uchar * ) my_malloc (PSI_INSTRUMENT_ME ,
2132
2133
share -> base .default_rec_buff_size ,
2133
- MYF (param -> malloc_flags ))))
2134
+ MYF (MY_THREAD_SPECIFIC ))))
2134
2135
{
2135
2136
_ma_check_print_error (param ,"Not enough memory for record" );
2136
2137
DBUG_RETURN (-1 );
@@ -2766,10 +2767,10 @@ int maria_repair(HA_CHECK *param, register MARIA_HA *info,
2766
2767
if (!(sort_param .record =
2767
2768
(uchar * ) my_malloc (PSI_INSTRUMENT_ME , (uint )
2768
2769
share -> base .default_rec_buff_size ,
2769
- MYF (param -> malloc_flags ))) ||
2770
+ MYF (MY_THREAD_SPECIFIC ))) ||
2770
2771
_ma_alloc_buffer (& sort_param .rec_buff , & sort_param .rec_buff_size ,
2771
2772
share -> base .default_rec_buff_size ,
2772
- MYF (param -> malloc_flags )))
2773
+ MYF (MY_THREAD_SPECIFIC )))
2773
2774
{
2774
2775
_ma_check_print_error (param , "Not enough memory for extra record" );
2775
2776
goto err ;
@@ -3721,7 +3722,7 @@ int maria_filecopy(HA_CHECK *param, File to,File from,my_off_t start,
3721
3722
3722
3723
buff_length = (ulong ) MY_MIN (param -> write_buffer_length ,length );
3723
3724
if (!(buff = my_malloc (PSI_INSTRUMENT_ME , buff_length ,
3724
- MYF (param -> malloc_flags ))))
3725
+ MYF (MY_THREAD_SPECIFIC ))))
3725
3726
{
3726
3727
buff = tmp_buff ; buff_length = IO_SIZE ;
3727
3728
}
@@ -3867,10 +3868,10 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info,
3867
3868
if (!(sort_param .record =
3868
3869
(uchar * ) my_malloc (PSI_INSTRUMENT_ME ,
3869
3870
(size_t ) share -> base .default_rec_buff_size ,
3870
- MYF (param -> malloc_flags ))) ||
3871
+ MYF (MY_THREAD_SPECIFIC ))) ||
3871
3872
_ma_alloc_buffer (& sort_param .rec_buff , & sort_param .rec_buff_size ,
3872
3873
share -> base .default_rec_buff_size ,
3873
- MYF (param -> malloc_flags )))
3874
+ MYF (MY_THREAD_SPECIFIC )))
3874
3875
{
3875
3876
_ma_check_print_error (param , "Not enough memory for extra record" );
3876
3877
goto err ;
@@ -3889,7 +3890,7 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info,
3889
3890
sort_param .wordlist = NULL ;
3890
3891
init_alloc_root (PSI_INSTRUMENT_ME , & sort_param .wordroot ,
3891
3892
FTPARSER_MEMROOT_ALLOC_SIZE , 0 ,
3892
- MYF (param -> malloc_flags ));
3893
+ MYF (MY_THREAD_SPECIFIC ));
3893
3894
3894
3895
sort_param .key_cmp = sort_key_cmp ;
3895
3896
sort_param .lock_in_memory = maria_lock_memory ;
@@ -4457,7 +4458,7 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
4457
4458
if (!(sort_param = (MARIA_SORT_PARAM * )
4458
4459
my_malloc (PSI_INSTRUMENT_ME , (uint ) share -> base .keys *
4459
4460
(sizeof (MARIA_SORT_PARAM ) + share -> base .pack_reclength ),
4460
- MYF (MY_ZEROFILL | param -> malloc_flags ))))
4461
+ MYF (MY_ZEROFILL | MY_THREAD_SPECIFIC ))))
4461
4462
{
4462
4463
_ma_check_print_error (param ,"Not enough memory for key!" );
4463
4464
goto err ;
@@ -4515,9 +4516,10 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
4515
4516
4516
4517
sort_param [i ].record = (((uchar * )(sort_param + share -> base .keys ))+
4517
4518
(share -> base .pack_reclength * i ));
4519
+ /* These buffers are per thread */
4518
4520
if (_ma_alloc_buffer (& sort_param [i ].rec_buff , & sort_param [i ].rec_buff_size ,
4519
4521
share -> base .default_rec_buff_size ,
4520
- MYF (param -> malloc_flags )))
4522
+ MYF (0 )))
4521
4523
{
4522
4524
_ma_check_print_error (param ,"Not enough memory!" );
4523
4525
goto err ;
@@ -4546,7 +4548,7 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
4546
4548
sort_param [i ].key_length += ft_max_word_len_for_sort - HA_FT_MAXBYTELEN ;
4547
4549
init_alloc_root (PSI_INSTRUMENT_ME , & sort_param [i ].wordroot ,
4548
4550
FTPARSER_MEMROOT_ALLOC_SIZE , 0 ,
4549
- MYF (param -> malloc_flags ));
4551
+ MYF (MY_THREAD_SPECIFIC ));
4550
4552
}
4551
4553
}
4552
4554
sort_info .total_keys = i ;
@@ -6105,7 +6107,7 @@ static MA_SORT_KEY_BLOCKS *alloc_key_blocks(HA_CHECK *param, uint blocks,
6105
6107
if (!(block = (MA_SORT_KEY_BLOCKS * )
6106
6108
my_malloc (PSI_INSTRUMENT_ME ,
6107
6109
(sizeof (MA_SORT_KEY_BLOCKS )+ buffer_length + IO_SIZE )* blocks ,
6108
- MYF (param -> malloc_flags ))))
6110
+ MYF (MY_THREAD_SPECIFIC ))))
6109
6111
{
6110
6112
_ma_check_print_error (param ,"Not enough memory for sort-key-blocks" );
6111
6113
return (0 );
0 commit comments