diff --git a/src/storage/v3/transaction.hpp b/src/storage/v3/transaction.hpp index 8cb4225ee..aa3fa3d1a 100644 --- a/src/storage/v3/transaction.hpp +++ b/src/storage/v3/transaction.hpp @@ -31,8 +31,8 @@ struct CommitInfo { }; struct Transaction { - Transaction(coordinator::Hlc start_timestamp, CommitInfo new_commit_info, std::list<Delta> deltas, - uint64_t command_id, bool must_abort, bool is_aborted, IsolationLevel isolation_level) + Transaction(coordinator::Hlc start_timestamp, CommitInfo new_commit_info, uint64_t command_id, bool must_abort, + bool is_aborted, IsolationLevel isolation_level) : start_timestamp{start_timestamp}, commit_info{std::make_unique<CommitInfo>(new_commit_info)}, command_id(command_id), @@ -108,8 +108,10 @@ struct Transaction { // This does not solve the whole problem of copying deltas std::unique_ptr<Transaction> Clone() const { - return std::make_unique<Transaction>(start_timestamp, *commit_info, CopyDeltas(commit_info.get()), command_id, - must_abort, is_aborted, isolation_level); + auto transaction_ptr = std::make_unique<Transaction>(start_timestamp, *commit_info, command_id, must_abort, + is_aborted, isolation_level); + transaction_ptr->deltas = CopyDeltas(transaction_ptr->commit_info.get()); + return transaction_ptr; } coordinator::Hlc start_timestamp;