Failpoint for testing slow index analysis

This commit is contained in:
Alexander Gololobov 2024-09-16 13:34:01 +02:00
parent 31ddfc6f5f
commit 4af369fbc4
2 changed files with 13 additions and 0 deletions

View File

@ -63,6 +63,7 @@ static struct InitFiu
REGULAR(keepermap_fail_drop_data) \ REGULAR(keepermap_fail_drop_data) \
REGULAR(lazy_pipe_fds_fail_close) \ REGULAR(lazy_pipe_fds_fail_close) \
PAUSEABLE(infinite_sleep) \ PAUSEABLE(infinite_sleep) \
REGULAR(slowdown_index_analysis) \
namespace FailPoints namespace FailPoints

View File

@ -41,6 +41,8 @@
#include <Core/UUID.h> #include <Core/UUID.h>
#include <Core/Settings.h> #include <Core/Settings.h>
#include <Common/CurrentMetrics.h> #include <Common/CurrentMetrics.h>
#include <Common/FailPoint.h>
#include <base/sleep.h>
#include <DataTypes/DataTypeDate.h> #include <DataTypes/DataTypeDate.h>
#include <DataTypes/DataTypeEnum.h> #include <DataTypes/DataTypeEnum.h>
#include <DataTypes/DataTypeUUID.h> #include <DataTypes/DataTypeUUID.h>
@ -75,6 +77,11 @@ namespace ErrorCodes
extern const int DUPLICATED_PART_UUIDS; extern const int DUPLICATED_PART_UUIDS;
} }
namespace FailPoints
{
extern const char slowdown_index_analysis[];
}
MergeTreeDataSelectExecutor::MergeTreeDataSelectExecutor(const MergeTreeData & data_) MergeTreeDataSelectExecutor::MergeTreeDataSelectExecutor(const MergeTreeData & data_)
: data(data_), log(getLogger(data.getLogName() + " (SelectExecutor)")) : data(data_), log(getLogger(data.getLogName() + " (SelectExecutor)"))
@ -1565,6 +1572,11 @@ void MergeTreeDataSelectExecutor::selectPartsToRead(
if (query_status) if (query_status)
query_status->checkTimeLimit(); query_status->checkTimeLimit();
fiu_do_on(FailPoints::slowdown_index_analysis,
{
sleepForMilliseconds(1000);
});
const auto * part = part_or_projection->isProjectionPart() ? part_or_projection->getParentPart() : part_or_projection.get(); const auto * part = part_or_projection->isProjectionPart() ? part_or_projection->getParentPart() : part_or_projection.get();
if (part_values && part_values->find(part->name) == part_values->end()) if (part_values && part_values->find(part->name) == part_values->end())
continue; continue;