Merge pull request #57991 from hanfei1991/hanfei/refine-err-msg

refine error message
This commit is contained in:
Han Fei 2023-12-19 01:14:18 +01:00 committed by GitHub
commit 032fd08559
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4045,11 +4045,14 @@ void MergeTreeData::forcefullyMovePartToDetachedAndRemoveFromMemory(const MergeT
Strings restored;
Strings error_parts;
auto is_appropriate_state = [] (DataPartState state)
auto is_appropriate_state = [] (const DataPartPtr & part_)
{
if (state != DataPartState::Outdated)
throw Exception(ErrorCodes::LOGICAL_ERROR, "Trying to restore a part from unexpected state: {}", state);
return true;
/// In rare cases, we may have a chain of unexpected parts that cover common source parts, e.g. all_1_2_3, all_1_3_4
/// It may happen as a result of interrupted cloneReplica
bool already_active = part_->getState() == DataPartState::Active;
if (!already_active && part_->getState() != DataPartState::Outdated)
throw Exception(ErrorCodes::LOGICAL_ERROR, "Trying to restore a part {} from unexpected state: {}", part_->name, part_->getState());
return !already_active;
};
auto activate_part = [this, &restored_active_part](auto it)
@ -4093,7 +4096,7 @@ void MergeTreeData::forcefullyMovePartToDetachedAndRemoveFromMemory(const MergeT
for (const auto & part_candidate_in_partition : parts_candidates | std::views::reverse)
{
if (part->info.contains(part_candidate_in_partition->info)
&& is_appropriate_state(part_candidate_in_partition->getState()))
&& is_appropriate_state(part_candidate_in_partition))
{
String out_reason;
/// Outdated parts can itersect legally (because of DROP_PART) here it's okay, we