MCPcopy Create free account
hub / github.com/baidu/tera / ScheduleUpdateMeta

Method ScheduleUpdateMeta

src/sdk/table_impl.cc:1896–1921  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1894}
1895
1896void TableImpl::ScheduleUpdateMeta(const std::string& row, int64_t meta_timestamp) {
1897 MutexLock lock(&meta_mutex_);
1898 TabletMetaNode* node = GetTabletMetaNodeForKey(row);
1899 if (node == NULL) {
1900 TabletMetaNode& new_node = tablet_meta_list_[row];
1901 new_node.meta.mutable_key_range()->set_key_start(row);
1902 new_node.meta.mutable_key_range()->set_key_end(row + '\0');
1903 new_node.status = WAIT_UPDATE;
1904 UpdateMetaAsync();
1905 return;
1906 }
1907 if (node->status == NORMAL && meta_timestamp >= node->update_time) {
1908 int64_t update_interval =
1909 node->update_time + FLAGS_tera_sdk_update_meta_internal - get_micros() / 1000;
1910 if (update_interval <= 0) {
1911 node->status = WAIT_UPDATE;
1912 UpdateMetaAsync();
1913 } else {
1914 node->status = DELAY_UPDATE;
1915 ThreadPool::Task delay_task =
1916 std::bind(&TableImpl::DelayUpdateMeta, this, node->meta.key_range().key_start(),
1917 node->meta.key_range().key_end());
1918 thread_pool_->DelayTask(update_interval, delay_task);
1919 }
1920 }
1921}
1922
1923bool TableImpl::UpdateTableMeta(ErrorCode* err) {
1924 MutexLock lock(&table_meta_mutex_);

Callers

nothing calls this directly

Calls 2

DelayTaskMethod · 0.80
get_microsFunction · 0.50

Tested by

no test coverage detected