Skip to content

Commit 689e901

Browse files
authored
get label key/value from config file (#45)
1 parent a3df3a2 commit 689e901

File tree

12 files changed

+42
-11
lines changed

12 files changed

+42
-11
lines changed

Diff for: contrib/client-c/include/tikv/Region.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ using RPCContextPtr = std::shared_ptr<RPCContext>;
126126

127127
class RegionCache {
128128
public:
129-
RegionCache(pd::ClientPtr pdClient_) : pdClient(pdClient_), log(&Logger::get("pingcap.tikv")) {
129+
RegionCache(pd::ClientPtr pdClient_, std::string key_, std::string value_) : pdClient(pdClient_), learner_key(key_), learner_value(value_), log(&Logger::get("pingcap.tikv")) {
130130
}
131131

132132
RPCContextPtr getRPCContext(Backoffer & bo, const RegionVerID & id, bool is_learner);
@@ -175,6 +175,10 @@ class RegionCache {
175175

176176
std::mutex store_mutex;
177177

178+
std::string learner_key;
179+
180+
std::string learner_value;
181+
178182
Logger * log;
179183
};
180184

Diff for: contrib/client-c/src/test/get_region_id_wrong_test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ bool testReadIndex () {
2727
::sleep(1);
2828

2929
pd::ClientPtr clt = std::make_shared<pd::Client>(addrs);
30-
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt);
30+
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt, "zone", "engine");
3131
kv::RpcClientPtr rpc = std::make_shared<kv::RpcClient>();
3232
kv::RegionClient client(cache, rpc, verID);
3333
int idx = client.getReadIndex();

Diff for: contrib/client-c/src/test/get_store_id_wrong_2_test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ bool testReadIndex () {
3030
::sleep(1);
3131

3232
pd::ClientPtr clt = std::make_shared<pd::Client>(addrs);
33-
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt);
33+
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt, "zone", "engine");
3434
kv::RpcClientPtr rpc = std::make_shared<kv::RpcClient>();
3535
kv::RegionClient client(cache, rpc, verID);
3636
if( 5 != client.getReadIndex()) {

Diff for: contrib/client-c/src/test/get_store_id_wrong_test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ bool testReadIndex () {
2828
::sleep(1);
2929

3030
pd::ClientPtr clt = std::make_shared<pd::Client>(addrs);
31-
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt);
31+
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt, "zone", "engine");
3232
kv::RpcClientPtr rpc = std::make_shared<kv::RpcClient>();
3333
kv::RegionClient client(cache, rpc, verID);
3434
int idx = client.getReadIndex();

Diff for: contrib/client-c/src/test/grpc_error_test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ bool testReadIndex () {
2929
::sleep(1);
3030

3131
pd::ClientPtr clt = std::make_shared<pd::Client>(addrs);
32-
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt);
32+
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt, "zone", "engine");
3333
kv::RpcClientPtr rpc = std::make_shared<kv::RpcClient>();
3434
kv::RegionClient client(cache, rpc, verID);
3535
int idx = client.getReadIndex();

Diff for: contrib/client-c/src/test/read_index_test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ bool testReadIndex () {
2525

2626
::sleep(1);
2727
pd::ClientPtr clt = std::make_shared<pd::Client>(addrs);
28-
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt);
28+
kv::RegionCachePtr cache = std::make_shared<kv::RegionCache>(clt, "zone", "engine");
2929
kv::RpcClientPtr rpc = std::make_shared<kv::RpcClient>();
3030
kv::RegionClient client(cache, rpc, verID);
3131
int idx = client.getReadIndex();

Diff for: contrib/client-c/src/tikv/Region.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ metapb::Peer RegionCache::selectLearner(Backoffer & bo, const std::vector<metapb
7878
for (auto slave : slaves) {
7979
auto store_id = slave.store_id();
8080
auto labels = getStore(bo, store_id).labels;
81-
if (labels["zone"] == "engine") {
81+
if (labels[learner_key] == learner_value) {
8282
return slave;
8383
}
8484
}

Diff for: dbms/src/Interpreters/Context.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1324,7 +1324,7 @@ TMTContext & Context::getTMTContext()
13241324
{
13251325
auto lock = getLock();
13261326
if (!shared->tmt_context)
1327-
shared->tmt_context = std::make_shared<TMTContext>(*this, pd_addrs);
1327+
shared->tmt_context = std::make_shared<TMTContext>(*this, pd_addrs, learner_key, learner_value);
13281328
return *(shared->tmt_context);
13291329
}
13301330

Diff for: dbms/src/Interpreters/Context.h

+12
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,14 @@ class Context
355355
pd_addrs = std::move(addrs_);
356356
}
357357

358+
void setLearnerKey(std::string key_) {
359+
learner_key = key_;
360+
}
361+
362+
void setLearnerValue(std::string value_) {
363+
learner_value = value_;
364+
}
365+
358366
BackgroundProcessingPool & getBackgroundPool();
359367

360368
void setDDLWorker(std::shared_ptr<DDLWorker> ddl_worker);
@@ -447,6 +455,10 @@ class Context
447455
void scheduleCloseSession(const SessionKey & key, std::chrono::steady_clock::duration timeout);
448456

449457
std::vector<String> pd_addrs;
458+
459+
std::string learner_key;
460+
461+
std::string learner_value;
450462
};
451463

452464

Diff for: dbms/src/Server/Server.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,21 @@ int Server::main(const std::vector<std::string> & /*args*/)
324324
} else {
325325
LOG_INFO(log, "Not found pd addrs.");
326326
}
327+
328+
if (config().has("raft.learner_key"))
329+
{
330+
String learner_key = config().getString("raft.learner_key");
331+
global_context->setLearnerKey(learner_key);
332+
} else {
333+
global_context->setLearnerKey("zone");
334+
}
335+
if (config().has("raft.learner_value"))
336+
{
337+
String learner_value = config().getString("raft.learner_value");
338+
global_context->setLearnerValue(learner_value);
339+
} else {
340+
global_context->setLearnerKey("engine");
341+
}
327342
global_context->initializeRaftService(raft_service_addr);
328343
}
329344
if (config().has("tidb"))

Diff for: dbms/src/Storages/Transaction/TMTContext.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
namespace DB
77
{
88

9-
TMTContext::TMTContext(Context & context, std::vector<String> addrs)
9+
TMTContext::TMTContext(Context & context, std::vector<String> addrs, std::string learner_key_, std::string learner_value_)
1010
: kvstore(std::make_shared<KVStore>(context.getPath() + "kvstore/")),
1111
region_table(context, context.getPath() + "regmap/"),
1212
schema_syncer(std::make_shared<HttpJsonSchemaSyncer>()),
1313
pd_client(addrs.size() == 0 ? static_cast<pingcap::pd::IClient *>(new pingcap::pd::MockPDClient())
1414
: static_cast<pingcap::pd::IClient *>(new pingcap::pd::Client(addrs))),
15-
region_cache(std::make_shared<pingcap::kv::RegionCache>(pd_client)),
15+
region_cache(std::make_shared<pingcap::kv::RegionCache>(pd_client, learner_key_, learner_value_)),
1616
rpc_client(std::make_shared<pingcap::kv::RpcClient>())
1717
{
1818
kvstore->restore(

Diff for: dbms/src/Storages/Transaction/TMTContext.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class TMTContext
2222

2323
public:
2424
// TODO: get flusher args from config file
25-
explicit TMTContext(Context & context_, std::vector<String> addrs);
25+
explicit TMTContext(Context & context_, std::vector<String> addrs, std::string learner_key_, std::string learner_value_);
2626

2727
SchemaSyncerPtr getSchemaSyncer() const;
2828
void setSchemaSyncer(SchemaSyncerPtr);

0 commit comments

Comments
 (0)