mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 09:40:49 +00:00
dbms: modified criteria for automatic repair [#METR-13235].
This commit is contained in:
parent
6f5d28e975
commit
2800bf4c30
@ -472,22 +472,30 @@ void StorageReplicatedMergeTree::checkParts(bool skip_sanity_checks)
|
|||||||
+ toString(parts_to_add.size()) + " unexpectedly merged parts, "
|
+ toString(parts_to_add.size()) + " unexpectedly merged parts, "
|
||||||
+ toString(expected_parts.size()) + " missing obsolete parts, "
|
+ toString(expected_parts.size()) + " missing obsolete parts, "
|
||||||
+ toString(parts_to_fetch.size()) + " missing parts";
|
+ toString(parts_to_fetch.size()) + " missing parts";
|
||||||
bool insane =
|
|
||||||
parts_to_add.size() > data.settings.replicated_max_unexpectedly_merged_parts ||
|
|
||||||
unexpected_parts.size() > data.settings.replicated_max_unexpected_parts ||
|
|
||||||
expected_parts.size() > data.settings.replicated_max_missing_obsolete_parts ||
|
|
||||||
parts_to_fetch.size() > data.settings.replicated_max_missing_active_parts;
|
|
||||||
|
|
||||||
if (insane && !skip_sanity_checks)
|
/** Можно автоматически синхронизировать данные,
|
||||||
{
|
* если количество ошибок каждого из четырёх типов не больше соответствующих порогов,
|
||||||
throw Exception("The local set of parts of table " + getTableName() + " doesn't look like the set of parts in ZooKeeper. "
|
* или если отношение общего количества ошибок к общему количеству кусков (минимальному - в локальной файловой системе или в ZK)
|
||||||
+ sanity_report,
|
* не больше некоторого отношения (например 5%).
|
||||||
ErrorCodes::TOO_MANY_UNEXPECTED_DATA_PARTS);
|
*/
|
||||||
}
|
|
||||||
|
size_t min_parts_local_or_expected = std::min(expected_parts_vec.size(), parts.size());
|
||||||
|
|
||||||
|
bool insane =
|
||||||
|
(parts_to_add.size() > data.settings.replicated_max_unexpectedly_merged_parts
|
||||||
|
|| unexpected_parts.size() > data.settings.replicated_max_unexpected_parts
|
||||||
|
|| expected_parts.size() > data.settings.replicated_max_missing_obsolete_parts
|
||||||
|
|| parts_to_fetch.size() > data.settings.replicated_max_missing_active_parts)
|
||||||
|
&& ((parts_to_add.size() + unexpected_parts.size() + expected_parts.size() + parts_to_fetch.size())
|
||||||
|
> min_parts_local_or_expected * data.settings.replicated_max_ratio_of_wrong_parts);
|
||||||
|
|
||||||
if (insane)
|
if (insane)
|
||||||
{
|
{
|
||||||
|
if (skip_sanity_checks)
|
||||||
LOG_WARNING(log, sanity_report);
|
LOG_WARNING(log, sanity_report);
|
||||||
|
else
|
||||||
|
throw Exception("The local set of parts of table " + getTableName() + " doesn't look like the set of parts in ZooKeeper. "
|
||||||
|
+ sanity_report, ErrorCodes::TOO_MANY_UNEXPECTED_DATA_PARTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Добавим в ZK информацию о кусках, покрывающих недостающие куски.
|
/// Добавим в ZK информацию о кусках, покрывающих недостающие куски.
|
||||||
|
Loading…
Reference in New Issue
Block a user