MCPcopy Create free account
hub / github.com/Tencent/phxqueue / Execute

Method Execute

phxqueue/lock/locksm.cpp:150–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148LockSM::~LockSM() {}
149
150bool LockSM::Execute(const int paxos_group_id, const uint64_t instance_id,
151 const string &paxos_value, phxpaxos::SMCtx *sm_ctx) {
152 comm::LockSMBP::GetThreadInstance()->
153 OnExecute(impl_->lock->GetTopicID(), paxos_group_id,
154 instance_id, paxos_value);
155 QLVerb("topic_id %d paxos_group_id %d instance_id %llu",
156 impl_->lock->GetTopicID(), paxos_group_id, instance_id);
157
158 proto::LockPaxosArgs args;
159 bool succ{args.ParseFromString(paxos_value)};
160 if (!succ) {
161 QLErr("topic_id %d paxos_group_id %d instance_id %llu ParseFromString err",
162 impl_->lock->GetTopicID(), paxos_group_id, instance_id);
163
164 return false;
165 }
166
167 int ret{DoExecute(impl_->lock, LockDb::Type::MAP, paxos_group_id,
168 instance_id, args, false, sm_ctx)};
169
170 if (!args.master_addr().ip().empty()) {
171 auto opt(impl_->lock->GetLockOption());
172
173 comm::proto::Addr addr;
174 addr.set_ip(opt->ip);
175 addr.set_port(opt->port);
176 addr.set_paxos_port(opt->paxos_port);
177
178 if (!(addr.ip() == args.master_addr().ip() &&
179 addr.port() == args.master_addr().port() &&
180 addr.paxos_port() == args.master_addr().paxos_port())) {
181 QLInfo("topic_id %d paxos_group_id %d DropMaster self_addr %s master_addr %s",
182 impl_->lock->GetTopicID(), paxos_group_id, addr.ip().c_str(),
183 args.master_addr().ip().c_str());
184 auto &&node(impl_->lock->GetNode());
185 if (node) {
186 node->DropMaster(paxos_group_id);
187 } else {
188 // init should not drop master
189 QLInfo("topic_id %d paxos_group_id %d node null self_addr %s master_addr %s",
190 impl_->lock->GetTopicID(), paxos_group_id, addr.ip().c_str(),
191 args.master_addr().ip().c_str());
192 }
193 }
194 }
195
196 return ret;
197}
198
199bool LockSM::ExecuteForCheckpoint(const int paxos_group_id, const uint64_t instance_id,
200 const string &paxos_value) {

Callers

nothing calls this directly

Calls 4

DoExecuteFunction · 0.85
OnExecuteMethod · 0.80
GetLockOptionMethod · 0.80
GetTopicIDMethod · 0.45

Tested by

no test coverage detected