This commit is contained in:
Michael Kolupaev 2014-07-07 14:23:24 +04:00
parent 39fa078e85
commit 557a48f9e5
3 changed files with 6 additions and 5 deletions

View File

@ -369,7 +369,7 @@ public:
if (data && (!removed_parts.empty() || !added_parts.empty()))
{
LOG_DEBUG(data->log, "Undoing transaction");
data->replaceParts(removed_parts, added_parts);
data->replaceParts(removed_parts, added_parts, true);
}
}
catch(...)
@ -464,8 +464,9 @@ public:
DataPartsVector renameTempPartAndReplace(MutableDataPartPtr part, Increment * increment = nullptr, Transaction * out_transaction = nullptr);
/** Убирает из рабочего набора куски remove и добавляет куски add.
* Если clear_without_timeout, данные будут удалены при следующем clearOldParts, игнорируя old_parts_lifetime.
*/
void replaceParts(const DataPartsVector & remove, const DataPartsVector & add);
void replaceParts(const DataPartsVector & remove, const DataPartsVector & add, bool clear_without_timeout);
/** Переименовывает кусок в prefix_кусок и убирает его из рабочего набора.
* Лучше использовать только когда никто не может читать или писать этот кусок

View File

@ -43,7 +43,7 @@ public:
if (block_id.empty())
block_id = part->checksums.summaryDataChecksum();
LOG_DEBUG(log, "Wrote block " << part_number << " with ID " << block_id);
LOG_DEBUG(log, "Wrote block " << part_number << " with ID " << block_id << ", " << current_block.block.rows() << " rows");
MergeTreeData::Transaction transaction; /// Если не получится добавить кусок в ZK, снова уберем его из рабочего набора.
storage.data.renameTempPartAndAdd(part, nullptr, &transaction);

View File

@ -679,7 +679,7 @@ MergeTreeData::DataPartsVector MergeTreeData::renameTempPartAndReplace(
return res;
}
void MergeTreeData::replaceParts(const DataPartsVector & remove, const DataPartsVector & add)
void MergeTreeData::replaceParts(const DataPartsVector & remove, const DataPartsVector & add, bool clear_without_timeout)
{
LOG_TRACE(log, "Removing " << remove.size() << " parts and adding " << add.size() << " parts.");
@ -687,7 +687,7 @@ void MergeTreeData::replaceParts(const DataPartsVector & remove, const DataParts
for (const DataPartPtr & part : remove)
{
part->remove_time = time(0);
part->remove_time = clear_without_timeout ? 0 : time(0);
data_parts.erase(part);
}
for (const DataPartPtr & part : add)