mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 16:12:01 +00:00
Merge
This commit is contained in:
parent
f2357d50b5
commit
c6722da2b2
@ -494,6 +494,8 @@ private:
|
|||||||
|
|
||||||
/// Используется, чтобы не выполнять одновременно функцию grabOldParts.
|
/// Используется, чтобы не выполнять одновременно функцию grabOldParts.
|
||||||
std::mutex grab_old_parts_mutex;
|
std::mutex grab_old_parts_mutex;
|
||||||
|
/// То же самое для clearOldTemporaryDirectories.
|
||||||
|
std::mutex clear_old_temporary_directories_mutex;
|
||||||
|
|
||||||
/** Для каждого шарда множество шардированных кусков.
|
/** Для каждого шарда множество шардированных кусков.
|
||||||
*/
|
*/
|
||||||
|
@ -371,6 +371,11 @@ void MergeTreeData::loadDataParts(bool skip_sanity_checks)
|
|||||||
|
|
||||||
void MergeTreeData::clearOldTemporaryDirectories()
|
void MergeTreeData::clearOldTemporaryDirectories()
|
||||||
{
|
{
|
||||||
|
/// Если метод уже вызван из другого потока, то можно ничего не делать.
|
||||||
|
std::unique_lock<std::mutex> lock(clear_old_temporary_directories_mutex, std::defer_lock);
|
||||||
|
if (!lock.try_lock())
|
||||||
|
return;
|
||||||
|
|
||||||
/// Удаляем временные директории старше суток.
|
/// Удаляем временные директории старше суток.
|
||||||
Poco::DirectoryIterator end;
|
Poco::DirectoryIterator end;
|
||||||
for (Poco::DirectoryIterator it{full_path}; it != end; ++it)
|
for (Poco::DirectoryIterator it{full_path}; it != end; ++it)
|
||||||
@ -379,10 +384,17 @@ void MergeTreeData::clearOldTemporaryDirectories()
|
|||||||
{
|
{
|
||||||
Poco::File tmp_dir(full_path + it.name());
|
Poco::File tmp_dir(full_path + it.name());
|
||||||
|
|
||||||
if (tmp_dir.isDirectory() && tmp_dir.getLastModified().epochTime() + 86400 < time(0))
|
try
|
||||||
{
|
{
|
||||||
LOG_WARNING(log, "Removing temporary directory " << full_path << it.name());
|
if (tmp_dir.isDirectory() && tmp_dir.getLastModified().epochTime() + 86400 < time(0))
|
||||||
Poco::File(full_path + it.name()).remove(true);
|
{
|
||||||
|
LOG_WARNING(log, "Removing temporary directory " << full_path << it.name());
|
||||||
|
Poco::File(full_path + it.name()).remove(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const Poco::FileNotFoundException &)
|
||||||
|
{
|
||||||
|
/// Ничего не делаем, если файл уже удалён.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user