Statistics
https://play.clickhouse.com/play?user=play#c2VsZWN0IAp0b1N0YXJ0T2ZIb3VyKGNoZWNrX3N0YXJ0X3RpbWUpIGFzIGQsCmNvdW50KCksICBncm91cFVuaXFBcnJheShwdWxsX3JlcXVlc3RfbnVtYmVyKSwgIGFueShyZXBvcnRfdXJsKQpmcm9tIGNoZWNrcyB3aGVyZSAnMjAyMi0wNi0wMScgPD0gY2hlY2tfc3RhcnRfdGltZSBhbmQgdGVzdF9uYW1lIGxpa2UgJyUwMjQ5MV9wYXJ0X2xvZ19oYXNfdGFibGVfdXVpZCUnIGFuZCB0ZXN0X3N0YXR1cyBpbiAoJ0ZBSUwnLCAnRkxBS1knKSBncm91cCBieSBkIG9yZGVyIGJ5IGQgZGVzYw==

Some times there are not output from requests.
{
            if ((*it)->info.min_block < pos)
                continue;
            if (!is_appropriate_state((*it)->getState()))
            {
                update_error(it);
                continue;
            }
            if ((*it)->info.min_block > pos)
                update_error(it);
            if ((*it)->getState() != DataPartState::Active)
                activate_part(it);
            pos = (*it)->info.max_block + 1;
            restored.push_back((*it)->name);
        }
        if (pos != part->info.max_block + 1)
            error = true;
        for (const String & name : restored)
        {
            LOG_INFO(log, "Activated part {}", name);
        }
        if (error)
        {
            LOG_ERROR(log, "The set of parts restored in place of {} looks incomplete. There might or might not be a data loss.{}", part->name, (error_parts.empty() ? "" : " Suspicious parts: " + error_parts));
        }
    }
    if (removed_active_part || restored_active_part)
        resetObjectColumnsFromActiveParts(lock);
}
void MergeTreeData::tryRemovePartImmediately(DataPartPtr && part)