Loosen safety threshold on amount of ALTER changes [#METR-21615].

This commit is contained in:
Alexey Milovidov 2016-06-06 22:50:30 +03:00
parent 168ca22435
commit e8ffd48e49
2 changed files with 16 additions and 3 deletions

View File

@ -72,7 +72,9 @@ struct MergeTreeSettings
size_t max_suspicious_broken_parts = 10;
/// Не выполнять ALTER, если количество файлов для модификации (удаления, добавления) больше указанного.
size_t max_files_to_modify_in_alter_columns = 5;
size_t max_files_to_modify_in_alter_columns = 50;
/// Не выполнять ALTER, если количество файлов для удаления больше указанного.
size_t max_files_to_remove_in_alter_columns = 10;
/// Максимальное количество ошибок при загрузке кусков, при котором ReplicatedMergeTree соглашается запускаться.
size_t replicated_max_unexpected_parts = 3;
@ -116,12 +118,14 @@ struct MergeTreeSettings
SET_SIZE_T(merge_parts_at_night_inc);
SET_SIZE_T(max_replicated_merges_in_queue);
SET_SIZE_T(old_parts_lifetime);
SET_SIZE_T(temporary_directories_lifetime);
SET_SIZE_T(parts_to_delay_insert);
SET_DOUBLE(insert_delay_step);
SET_SIZE_T(replicated_deduplication_window);
SET_SIZE_T(replicated_logs_to_keep);
SET_SIZE_T(max_suspicious_broken_parts);
SET_SIZE_T(max_files_to_modify_in_alter_columns);
SET_SIZE_T(max_files_to_remove_in_alter_columns);
SET_SIZE_T(replicated_max_unexpected_parts);
SET_SIZE_T(replicated_max_unexpectedly_merged_parts);
SET_SIZE_T(replicated_max_missing_obsolete_parts);

View File

@ -674,7 +674,16 @@ MergeTreeData::AlterDataPartTransactionPtr MergeTreeData::alterDataPart(
bool force_update_metadata;
createConvertExpression(part, part->columns, new_columns, expression, transaction->rename_map, force_update_metadata);
if (!skip_sanity_checks && transaction->rename_map.size() > settings.max_files_to_modify_in_alter_columns)
size_t num_files_to_modify = transaction->rename_map.size();
size_t num_files_to_remove = 0;
for (const auto & from_to : transaction->rename_map)
if (from_to.second.empty())
++num_files_to_remove;
if (!skip_sanity_checks
&& (num_files_to_modify > settings.max_files_to_modify_in_alter_columns
|| num_files_to_remove > settings.max_files_to_remove_in_alter_columns))
{
transaction->clear();
@ -686,7 +695,7 @@ MergeTreeData::AlterDataPartTransactionPtr MergeTreeData::alterDataPart(
for (const auto & from_to : transaction->rename_map)
{
if (!first)
exception_message << ", ";
exception_message << ", ";
exception_message << "from '" << from_to.first << "' to '" << from_to.second << "'";
first = false;
}