This commit is contained in:
Alexey Milovidov 2014-07-24 00:12:56 +04:00
commit 1a9efb66c1
3 changed files with 2 additions and 17 deletions

View File

@ -614,16 +614,9 @@ public:
void replaceParts(const DataPartsVector & remove, const DataPartsVector & add, bool clear_without_timeout);
/** Переименовывает кусок в prefix_кусок и убирает его из рабочего набора.
* Лучше использовать только когда никто не может читать или писать этот кусок
* (например, при инициализации таблицы).
*/
void renameAndDetachPart(DataPartPtr part, const String & prefix);
/** Убрать кусок из рабочего набора. Его данные удалятся при вызове clearOldParts, когда их перестанут читать.
* Если clear_without_timeout, данные будут удалены при следующем clearOldParts, игнорируя old_parts_lifetime.
*/
void deletePart(DataPartPtr part, bool clear_without_timeout);
/** Удалить неактуальные куски. Возвращает имена удаленных кусков.
*/
Strings clearOldParts();

View File

@ -710,18 +710,10 @@ void MergeTreeData::renameAndDetachPart(DataPartPtr part, const String & prefix)
Poco::ScopedLock<Poco::FastMutex> lock_all(all_data_parts_mutex);
if (!all_data_parts.erase(part))
throw Exception("No such data part", ErrorCodes::NO_SUCH_DATA_PART);
part->remove_time = time(0);
data_parts.erase(part);
part->renameAddPrefix(prefix);
}
void MergeTreeData::deletePart(DataPartPtr part, bool clear_without_timeout)
{
Poco::ScopedLock<Poco::FastMutex> lock(data_parts_mutex);
part->remove_time = clear_without_timeout ? 0 : time(0);
data_parts.erase(part);
}
MergeTreeData::DataParts MergeTreeData::getDataParts()
{
Poco::ScopedLock<Poco::FastMutex> lock(data_parts_mutex);

View File

@ -1454,7 +1454,7 @@ void StorageReplicatedMergeTree::partCheckThread()
removePartAndEnqueueFetch(part_name);
/// Удалим кусок локально.
data.deletePart(part, true);
data.renameAndDetachPart(part, "broken_");
}
}
/// Если куска нет в ZooKeeper, удалим его локально.
@ -1470,7 +1470,7 @@ void StorageReplicatedMergeTree::partCheckThread()
else
{
LOG_ERROR(log, "Unexpected part " << part_name << ". Removing.");
data.deletePart(part, false);
data.renameAndDetachPart(part, "unexpected_");
}
}
}