Loading...
Searching...
No Matches
resdb_config.cpp
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
21
22#include <glog/logging.h>
23
24namespace resdb {
25
26ResDBConfig::ResDBConfig(const std::vector<ReplicaInfo>& replicas,
27 const ReplicaInfo& self_info,
28 ResConfigData config_data)
29 : ResDBConfig(config_data, self_info, KeyInfo(), CertificateInfo()) {
30 replicas_ = replicas;
31}
32
33ResDBConfig::ResDBConfig(const std::vector<ReplicaInfo>& replicas,
34 const ReplicaInfo& self_info,
35 const KeyInfo& private_key,
36 const CertificateInfo& public_key_cert_info)
37 : ResDBConfig(ResConfigData(), self_info, private_key,
38 public_key_cert_info) {
39 replicas_ = replicas;
40}
41
42ResDBConfig::ResDBConfig(const ResConfigData& config_data,
43 const ReplicaInfo& self_info,
44 const KeyInfo& private_key,
45 const CertificateInfo& public_key_cert_info)
46 : config_data_(config_data),
47 self_info_(self_info),
48 private_key_(private_key),
49 public_key_cert_info_(public_key_cert_info) {
50 for (const auto& region : config_data.region()) {
51 if (region.region_id() == config_data.self_region_id()) {
52 LOG(INFO) << "get region info:" << region.DebugString();
53 for (const auto& replica : region.replica_info()) {
54 replicas_.push_back(replica);
55 }
56 LOG(INFO) << "get region config server size:"
57 << region.replica_info_size();
58 break;
59 }
60 }
61 if (config_data_.view_change_timeout_ms() == 0) {
62 config_data_.set_view_change_timeout_ms(viewchange_commit_timeout_ms_);
63 }
64 if (config_data_.client_batch_num() == 0) {
65 config_data_.set_client_batch_num(client_batch_num_);
66 }
67 if (config_data_.worker_num() == 0) {
68 config_data_.set_worker_num(worker_num_);
69 }
70 if (config_data_.input_worker_num() == 0) {
71 config_data_.set_input_worker_num(input_worker_num_);
72 }
73 if (config_data_.output_worker_num() == 0) {
74 config_data_.set_output_worker_num(output_worker_num_);
75 }
76 if (config_data_.tcp_batch_num() == 0) {
77 config_data_.set_tcp_batch_num(100);
78 }
79}
80
81void ResDBConfig::SetConfigData(const ResConfigData& config_data) {
82 config_data_ = config_data;
83 replicas_.clear();
84 for (const auto& region : config_data.region()) {
85 if (region.region_id() == config_data.self_region_id()) {
86 LOG(INFO) << "get region info:" << region.DebugString();
87 for (const auto& replica : region.replica_info()) {
88 replicas_.push_back(replica);
89 }
90 LOG(INFO) << "get region config server size:"
91 << region.replica_info_size();
92 break;
93 }
94 }
95 if (config_data_.view_change_timeout_ms() == 0) {
96 config_data_.set_view_change_timeout_ms(viewchange_commit_timeout_ms_);
97 }
98}
99
100KeyInfo ResDBConfig::GetPrivateKey() const { return private_key_; }
101
103 return public_key_cert_info_;
104}
105
106ResConfigData ResDBConfig::GetConfigData() const { return config_data_; }
107
108const std::vector<ReplicaInfo>& ResDBConfig::GetReplicaInfos() const {
109 return replicas_;
110}
111
112const ReplicaInfo& ResDBConfig::GetSelfInfo() const { return self_info_; }
113
114size_t ResDBConfig::GetReplicaNum() const { return replicas_.size(); }
115
117 int f = (replicas_.size() - 1) / 3;
118 return std::max(2 * f + 1, 1);
119}
120
122 int f = (replicas_.size() - 1) / 3;
123 return std::max(f + 1, 1);
124}
125
127 int f = (replicas_.size() - 1) / 3;
128 return std::max(f + 1, 1);
129}
130
132 int f = (replicas_.size() - 1) / 3;
133 return std::max(f, 0);
134}
135
137 client_timeout_ms_ = timeout_ms;
138}
139
140int ResDBConfig::GetClientTimeoutMs() const { return client_timeout_ms_; }
141
142// Logging
144 return checkpoint_logging_path_;
145}
146
147void ResDBConfig::SetCheckPointLoggingPath(const std::string& path) {
148 checkpoint_logging_path_ = path;
149}
150
152 return checkpoint_water_mark_;
153}
154
156 checkpoint_water_mark_ = water_mark;
157}
158
159void ResDBConfig::EnableCheckPoint(bool is_enable) {
160 is_enable_checkpoint_ = is_enable;
161}
162
163bool ResDBConfig::IsCheckPointEnabled() { return is_enable_checkpoint_; }
164
165bool ResDBConfig::HeartBeatEnabled() { return hb_enabled_; }
166
167void ResDBConfig::SetHeartBeatEnabled(bool enable_heartbeat) {
168 hb_enabled_ = enable_heartbeat;
169}
170
172 return signature_verifier_enabled_;
173}
174
176 signature_verifier_enabled_ = enable_sv;
177}
178
179// Performance setting
181 return is_performance_running_ || GetConfigData().is_performance_running();
182}
183
184void ResDBConfig::RunningPerformance(bool is_performance_running) {
185 is_performance_running_ = is_performance_running;
186}
187
188void ResDBConfig::SetTestMode(bool is_test_mode) {
189 is_test_mode_ = is_test_mode;
190}
191
192bool ResDBConfig::IsTestMode() const { return is_test_mode_; }
193
195 if (config_data_.max_process_txn()) {
196 return config_data_.max_process_txn();
197 }
198 return max_process_txn_;
199}
200
202 config_data_.set_max_process_txn(num);
203 max_process_txn_ = num;
204}
205
207 if (config_data_.max_client_complaint_num()) {
208 return config_data_.max_client_complaint_num();
209 }
210 return 10;
211}
212
214 return client_batch_wait_time_ms_;
215}
216
217void ResDBConfig::SetClientBatchWaitTimeMS(uint32_t wait_time_ms) {
218 client_batch_wait_time_ms_ = wait_time_ms;
219}
220
222 return config_data_.client_batch_num();
223}
224
226 config_data_.set_client_batch_num(num);
227}
228
229uint32_t ResDBConfig::GetWorkerNum() const { return config_data_.worker_num(); }
230
232 return config_data_.input_worker_num();
233}
234
236 return config_data_.output_worker_num();
237}
238
240 return config_data_.tcp_batch_num();
241}
242
244 return config_data_.view_change_timeout_ms()
245 ? config_data_.view_change_timeout_ms()
246 : viewchange_commit_timeout_ms_;
247}
248
250 config_data_.set_view_change_timeout_ms(timeout_ms);
251}
252
253} // namespace resdb
uint32_t GetOutputWorkerNum() const
void SetClientBatchNum(uint32_t num)
void SetViewchangeCommitTimeout(uint64_t timeout_ms)
void SetCheckPointWaterMark(int water_mark)
void SetMaxProcessTxn(uint32_t num)
uint32_t GetWorkerNum() const
int GetMinDataReceiveNum() const
int GetMinClientReceiveNum() const
uint32_t GetInputWorkerNum() const
size_t GetReplicaNum() const
ResConfigData GetConfigData() const
int GetCheckPointWaterMark() const
bool IsTestMode() const
uint32_t GetMaxProcessTxn() const
uint32_t GetTcpBatchNum() const
void SetClientTimeoutMs(int timeout_ms)
void SetSignatureVerifierEnabled(bool enable_sv)
size_t GetMaxMaliciousReplicaNum() const
int GetMinCheckpointReceiveNum() const
void SetClientBatchWaitTimeMS(uint32_t wait_time_ms)
uint32_t ClientBatchNum() const
CertificateInfo GetPublicKeyCertificateInfo() const
const ReplicaInfo & GetSelfInfo() const
void SetHeartBeatEnabled(bool enable_heartbeat)
void SetCheckPointLoggingPath(const std::string &path)
void RunningPerformance(bool)
std::string GetCheckPointLoggingPath() const
void SetConfigData(const ResConfigData &config_data)
void EnableCheckPoint(bool is_enable)
uint32_t ClientBatchWaitTimeMS() const
int GetClientTimeoutMs() const
ResDBConfig(const std::vector< ReplicaInfo > &replicas, const ReplicaInfo &self_info, ResConfigData config_data=ResConfigData())
const std::vector< ReplicaInfo > & GetReplicaInfos() const
uint32_t GetMaxClientComplaintNum() const
KeyInfo GetPrivateKey() const
uint32_t GetViewchangeCommitTimeout() const
ReplicaInfo self_info_