@@ -1660,7 +1660,7 @@ void StorageEngine::_follow_cooldown_meta(TabletSharedPtr t) {
16601660
16611661void StorageEngine::add_async_publish_task (int64_t partition_id, int64_t tablet_id,
16621662 int64_t publish_version, int64_t transaction_id,
1663- bool is_recovery) {
1663+ bool is_recovery, int64_t commit_tso ) {
16641664 if (!is_recovery) {
16651665 bool exists = false ;
16661666 {
@@ -1685,6 +1685,7 @@ void StorageEngine::add_async_publish_task(int64_t partition_id, int64_t tablet_
16851685 PendingPublishInfoPB pending_publish_info_pb;
16861686 pending_publish_info_pb.set_partition_id (partition_id);
16871687 pending_publish_info_pb.set_transaction_id (transaction_id);
1688+ pending_publish_info_pb.set_commit_tso (commit_tso);
16881689 static_cast <void >(TabletMetaManager::save_pending_publish_info (
16891690 tablet->data_dir (), tablet->tablet_id (), publish_version,
16901691 pending_publish_info_pb.SerializeAsString ()));
@@ -1693,7 +1694,7 @@ void StorageEngine::add_async_publish_task(int64_t partition_id, int64_t tablet_
16931694 << " version: " << publish_version << " txn_id:" << transaction_id
16941695 << " is_recovery: " << is_recovery;
16951696 std::unique_lock<std::shared_mutex> wlock (_async_publish_lock);
1696- _async_publish_tasks[tablet_id][publish_version] = {transaction_id, partition_id};
1697+ _async_publish_tasks[tablet_id][publish_version] = {transaction_id, partition_id, commit_tso };
16971698}
16981699
16991700int64_t StorageEngine::get_pending_publish_min_version (int64_t tablet_id) {
@@ -1730,8 +1731,9 @@ void StorageEngine::_process_async_publish() {
17301731
17311732 auto task_iter = tablet_iter->second .begin ();
17321733 int64_t version = task_iter->first ;
1733- int64_t transaction_id = task_iter->second .first ;
1734- int64_t partition_id = task_iter->second .second ;
1734+ int64_t transaction_id = std::get<0 >(task_iter->second );
1735+ int64_t partition_id = std::get<1 >(task_iter->second );
1736+ int64_t commit_tso = std::get<2 >(task_iter->second );
17351737 int64_t max_version = tablet->max_version ().second ;
17361738
17371739 if (version <= max_version) {
@@ -1753,7 +1755,7 @@ void StorageEngine::_process_async_publish() {
17531755 }
17541756
17551757 auto async_publish_task = std::make_shared<AsyncTabletPublishTask>(
1756- *this , tablet, partition_id, transaction_id, version);
1758+ *this , tablet, partition_id, transaction_id, version, commit_tso );
17571759 static_cast <void >(_tablet_publish_txn_thread_pool->submit_func (
17581760 [=]() { async_publish_task->handle (); }));
17591761 tablet_iter->second .erase (task_iter);
0 commit comments