MCPcopy Create free account
hub / github.com/4paradigm/OpenMLDB / SetTablePartition

Method SetTablePartition

src/nameserver/name_server_impl.cc:2203–2248  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2201}
2202
2203void NameServerImpl::SetTablePartition(RpcController* controller, const SetTablePartitionRequest* request,
2204 GeneralResponse* response, Closure* done) {
2205 brpc::ClosureGuard done_guard(done);
2206 if (!running_.load(std::memory_order_acquire) || (mode_.load(std::memory_order_acquire) == kFOLLOWER)) {
2207 response->set_code(::fedb::base::ReturnCode::kNameserverIsNotLeader);
2208 response->set_msg("nameserver is not leader");
2209 PDLOG(WARNING, "cur nameserver is not leader");
2210 return;
2211 }
2212 if (auto_failover_.load(std::memory_order_acquire)) {
2213 response->set_code(::fedb::base::ReturnCode::kAutoFailoverIsEnabled);
2214 response->set_msg("auto_failover is enabled");
2215 PDLOG(WARNING, "auto_failover is enabled");
2216 return;
2217 }
2218 std::string name = request->name();
2219 std::string db = request->db();
2220 uint32_t pid = request->table_partition().pid();
2221 std::lock_guard<std::mutex> lock(mu_);
2222 std::shared_ptr<::fedb::nameserver::TableInfo> table_info;
2223 if (!GetTableInfoUnlock(name, db, &table_info)) {
2224 PDLOG(WARNING, "table[%s] is not exist", name.c_str());
2225 response->set_code(::fedb::base::ReturnCode::kTableIsNotExist);
2226 response->set_msg("table is not exist");
2227 return;
2228 }
2229 std::shared_ptr<::fedb::nameserver::TableInfo> cur_table_info(table_info->New());
2230 cur_table_info->CopyFrom(*table_info);
2231 for (int idx = 0; idx < cur_table_info->table_partition_size(); idx++) {
2232 if (cur_table_info->table_partition(idx).pid() != pid) {
2233 continue;
2234 }
2235 ::fedb::nameserver::TablePartition* table_partition = cur_table_info->mutable_table_partition(idx);
2236 table_partition->Clear();
2237 table_partition->CopyFrom(request->table_partition());
2238 if (!UpdateZkTableNode(cur_table_info)) {
2239 response->set_code(::fedb::base::ReturnCode::kSetZkFailed);
2240 response->set_msg("set zk failed");
2241 return;
2242 }
2243 table_info->CopyFrom(*cur_table_info);
2244 break;
2245 }
2246 response->set_code(::fedb::base::ReturnCode::kOk);
2247 response->set_msg("ok");
2248}
2249
2250void NameServerImpl::MakeSnapshotNS(RpcController* controller, const MakeSnapshotNSRequest* request,
2251 GeneralResponse* response, Closure* done) {

Callers

nothing calls this directly

Calls 1

ClearMethod · 0.45

Tested by

no test coverage detected