Mike Percy has posted comments on this change. Change subject: consensus: Improve contract for API to fetch last-logged op id ......................................................................
Patch Set 1: (15 comments) http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/consensus/consensus_peers-test.cc File src/kudu/consensus/consensus_peers-test.cc: Line 210: ASSERT_OPID_EQ(first, message_queue_->GetLastOpIdInLog()); > warning: local copy '_left210' of the variable 'first' is never modified; c Done http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/consensus/consensus_queue.cc File src/kudu/consensus/consensus_queue.cc: Line 125: log_cache_(metric_entity, std::move(log), local_peer_pb_.permanent_uuid(), tablet_id_), > warning: passing result of std::move() as a const reference argument; no mo Done Line 126: metrics_(std::move(metric_entity)), > warning: passing result of std::move() as a const reference argument; no mo Done Line 143: log_cache_.Init(queue_state_.last_appended); > mind adding a TODO to merge LogCache::Init into the LogCache ctor, given we Done http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/consensus/raft_consensus.cc File src/kudu/consensus/raft_consensus.cc: Line 245: queue.get(), > in the case that one of the RETURN_NOT_OK calls below fails, then you'll en Done Line 250: pending->SetInitialCommittedOpId(info.last_committed_id); > I believe it was on purpose that this was called after the appending of the Ah, thank you for the catch. This caused a bug that I was having trouble diagnosing. PS1, Line 1492: opt_local_last_logged_opid) ? > you can use .value_or(MinimumOpId()) Actually, in this patch I can bypass this because we know RaftConsensus is running so we can use queue_->GetLastOpIdInLog() Line 1493: : MinimumOpId(); > is this right? I thought, if we don't know our own local op id, then it wou Not sure what I was thinking. Removed. Line 2226: if (!queue_ || !pending_) return boost::none; > think it's worth a comment here explaining the cases where we could hit thi Done PS1, Line 2234: default: : return boost::none; > is there another valid value to pass here? not FATAL? Hrm, yeah. It's a protobuf enum that is exposed to a remote read API via RPC, so for forward compatibility I'll make it a DFATAL and return boost::none. http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/tablet/tablet_metadata.h File src/kudu/tablet/tablet_metadata.h: Line 216: void SetPreFlushCallback(StatusClosure callback) { pre_flush_callback_ = callback; } > warning: parameter 'callback' is passed by value and only copied once; cons Done http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/tserver/tablet_copy_client.cc File src/kudu/tserver/tablet_copy_client.cc: Line 134: if (last_logged_opid && last_logged_opid->term() > caller_term) { > same question as in the Vote case -- is it correct to allow replacement if I'm not sure what else we can do. If we have tombstoned a failed replica, we will not know the last-logged opid, and this covers that case. Line 237: if (last_logged_opid && last_logged_opid->term() > remote_cstate_->current_term()) { > same see above http://gerrit.cloudera.org:8080/#/c/7717/1/src/kudu/tserver/ts_tablet_manager.cc File src/kudu/tserver/ts_tablet_manager.cc: Line 460: if (last_logged_opid) { > same question see my response in the in other file Line 474: int64_t last_logged_term = opt_last_logged_opid->term(); > is this guaranteed to be non-none? Ah, indeed no. I'll give it the same treatment as the others for now. -- To view, visit http://gerrit.cloudera.org:8080/7717 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4e4501a61cd40fdee0dc918b77675a0bc2515e7 Gerrit-PatchSet: 1 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Mike Percy <[email protected]> Gerrit-Reviewer: Alexey Serbin <[email protected]> Gerrit-Reviewer: David Ribeiro Alves <[email protected]> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy <[email protected]> Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon <[email protected]> Gerrit-HasComments: Yes
