adjust wash map node strategy
This commit is contained in:
9
src/share/cache/ob_kvcache_map.cpp
vendored
9
src/share/cache/ob_kvcache_map.cpp
vendored
@ -678,17 +678,24 @@ int ObKVCacheMap::replace_fragment_node(int64_t &start_pos, int64_t &replace_nod
|
|||||||
if (OB_FAIL(guard.get_ret())) {
|
if (OB_FAIL(guard.get_ret())) {
|
||||||
COMMON_LOG(WARN, "Fail to write lock bucket", K(ret), K(i));
|
COMMON_LOG(WARN, "Fail to write lock bucket", K(ret), K(i));
|
||||||
} else {
|
} else {
|
||||||
|
const int64_t start = common::ObClockGenerator::getClock();
|
||||||
Node *&bucket_ptr = get_bucket_node(i);
|
Node *&bucket_ptr = get_bucket_node(i);
|
||||||
prev = NULL;
|
prev = NULL;
|
||||||
iter = bucket_ptr;
|
iter = bucket_ptr;
|
||||||
|
int64_t node_count = 0;
|
||||||
while (NULL != iter) {
|
while (NULL != iter) {
|
||||||
if (iter->inst_->node_allocator_.is_fragment(iter)) {
|
if (iter->inst_->node_allocator_.is_fragment(iter)) {
|
||||||
internal_map_replace(hazard_guard, prev, iter, bucket_ptr);
|
internal_map_replace(hazard_guard, prev, iter, bucket_ptr);
|
||||||
++replace_node_count;
|
++node_count;
|
||||||
}
|
}
|
||||||
prev = iter;
|
prev = iter;
|
||||||
iter = iter->next_;
|
iter = iter->next_;
|
||||||
|
if (common::ObClockGenerator::getClock() - start >= 1 * 1000 * 1000) {
|
||||||
|
COMMON_LOG(INFO, "replace map node cost too much time", K(node_count), K(replace_node_count), K(replace_start_pos), K(i));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
replace_node_count += node_count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // hazard version guard
|
} // hazard version guard
|
||||||
|
|||||||
Reference in New Issue
Block a user