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

View File

@ -43,7 +43,7 @@ public:
if (block_id.empty()) if (block_id.empty())
block_id = part->checksums.summaryDataChecksum(); 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, снова уберем его из рабочего набора. MergeTreeData::Transaction transaction; /// Если не получится добавить кусок в ZK, снова уберем его из рабочего набора.
storage.data.renameTempPartAndAdd(part, nullptr, &transaction); storage.data.renameTempPartAndAdd(part, nullptr, &transaction);

View File

@ -679,7 +679,7 @@ MergeTreeData::DataPartsVector MergeTreeData::renameTempPartAndReplace(
return res; 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."); 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) for (const DataPartPtr & part : remove)
{ {
part->remove_time = time(0); part->remove_time = clear_without_timeout ? 0 : time(0);
data_parts.erase(part); data_parts.erase(part);
} }
for (const DataPartPtr & part : add) for (const DataPartPtr & part : add)