| 163 | new TableCacheCollector(table_cache, CacheCollectType::kCharge))) {} |
| 164 | |
| 165 | TabletNodeImpl::TabletNodeImpl() |
| 166 | : status_(kNotInited), |
| 167 | running_(true), |
| 168 | tablet_manager_(new TabletManager()), |
| 169 | zk_adapter_(NULL), |
| 170 | release_cache_timer_id_(kInvalidTimerId), |
| 171 | thread_pool_(new ThreadPool(FLAGS_tera_tabletnode_impl_thread_max_num)), |
| 172 | cache_metrics_(NULL) { |
| 173 | if (FLAGS_tera_local_addr == "") { |
| 174 | local_addr_ = utils::GetLocalHostName() + ":" + FLAGS_tera_tabletnode_port; |
| 175 | } else { |
| 176 | local_addr_ = FLAGS_tera_local_addr + ":" + FLAGS_tera_tabletnode_port; |
| 177 | } |
| 178 | sysinfo_.SetServerAddr(local_addr_); |
| 179 | |
| 180 | leveldb::Env::Default()->SetBackgroundThreads(FLAGS_tera_tabletnode_compact_thread_num); |
| 181 | |
| 182 | uint64_t max_log_size = static_cast<uint64_t>(FLAGS_leveldb_max_log_size_MB) << 20; |
| 183 | leveldb::LogOption log_opt = |
| 184 | leveldb::LogOption::LogOptionBuilder() |
| 185 | .SetMaxLogSize(max_log_size) |
| 186 | .SetFlushTriggerSize(FLAGS_leveldb_log_flush_trigger_size_B) |
| 187 | .SetFlushTriggerIntervalMs(FLAGS_leveldb_log_flush_trigger_interval_ms) |
| 188 | .Build(); |
| 189 | leveldb::Status s = |
| 190 | leveldb::Env::Default()->NewLogger(FLAGS_tera_leveldb_log_path, log_opt, &ldb_logger_); |
| 191 | leveldb::Env::Default()->SetLogger(ldb_logger_); |
| 192 | LOG(INFO) << "leveldb logger inited, log_file:" << FLAGS_tera_leveldb_log_path |
| 193 | << ", options:" << log_opt.ToString(); |
| 194 | |
| 195 | ldb_block_cache_ = leveldb::NewLRUCache(FLAGS_tera_tabletnode_block_cache_size * 1024UL * 1024); |
| 196 | m_memory_cache = leveldb::NewLRUCache(FLAGS_tera_memenv_block_cache_size * 1024UL * 1024); |
| 197 | ldb_table_cache_ = |
| 198 | new leveldb::TableCache(FLAGS_tera_tabletnode_table_cache_size * 1024UL * 1024); |
| 199 | if (!s.ok()) { |
| 200 | ldb_logger_ = NULL; |
| 201 | } |
| 202 | |
| 203 | if (FLAGS_tera_leveldb_env_type != "local") { |
| 204 | io::InitDfsEnv(); |
| 205 | } |
| 206 | |
| 207 | if (FLAGS_tera_tabletnode_tcm_cache_release_enabled) { |
| 208 | LOG(INFO) << "enable tcmalloc cache release timer"; |
| 209 | EnableReleaseMallocCacheTimer(); |
| 210 | } |
| 211 | const char* tcm_property = "tcmalloc.max_total_thread_cache_bytes"; |
| 212 | MallocExtension::instance()->SetNumericProperty(tcm_property, |
| 213 | FLAGS_tera_tabletnode_tcm_cache_size); |
| 214 | size_t tcm_t; |
| 215 | CHECK(MallocExtension::instance()->GetNumericProperty(tcm_property, &tcm_t)); |
| 216 | LOG(INFO) << tcm_property << "=" << tcm_t; |
| 217 | sysinfo_.SetProcessStartTime(get_micros()); |
| 218 | for (int level = 0; level != leveldb::config::kNumLevels; ++level) { |
| 219 | level_size_.push_back(tera::MetricCounter{ |
| 220 | kLevelSize, "level:" + std::to_string(level), {tera::SubscriberType::LATEST}, false}); |
| 221 | level_size_.back().Set(0); |
| 222 | } |
nothing calls this directly
no test coverage detected