]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: reset pending_txn's all_committed after set its value
authorXuehan Xu <xxhdx1985126@gmail.com>
Wed, 4 Nov 2020 02:13:13 +0000 (10:13 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Wed, 4 Nov 2020 02:48:48 +0000 (10:48 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/osd/replicated_backend.cc

index 3bde1e9d6f28511b29e3ceb436d243e077a39b11..3a131278b0c37708f25576fd32ea6a0ee77c3574 100644 (file)
@@ -90,10 +90,11 @@ ReplicatedBackend::_submit_transaction(std::set<pg_shard_t>&& pg_shards,
       }
       if (--peers->pending == 0) {
         peers->all_committed.set_value();
+       peers->all_committed = {};
+       return seastar::now();
       }
       return peers->all_committed.get_future();
     }).then([pending_txn, this] {
-      pending_txn->second.all_committed = {};
       auto acked_peers = std::move(pending_txn->second.acked_peers);
       pending_trans.erase(pending_txn);
       return seastar::make_ready_future<crimson::osd::acked_peers_t>(std::move(acked_peers));
@@ -122,7 +123,8 @@ void ReplicatedBackend::got_rep_op_reply(const MOSDRepOpReply& reply)
     if (peer.shard == reply.from) {
       peer.last_complete_ondisk = reply.get_last_complete_ondisk();
       if (--peers.pending == 0) {
-        peers.all_committed.set_value();    
+        peers.all_committed.set_value();
+        peers.all_committed = {};
       }
       return;
     }