bugfix: get_store cause deadlock
This commit is contained in:
parent
998e8d1a1a
commit
f30d7b163a
@ -796,9 +796,9 @@ void ObTmpTenantMemBlockManager::ObIOWaitInfoHandle::reset()
|
||||
}
|
||||
}
|
||||
|
||||
ObTmpTenantMemBlockManager::ObTmpTenantMemBlockManager()
|
||||
: wait_info_queue_(),
|
||||
wait_handles_map_(),
|
||||
ObTmpTenantMemBlockManager::ObTmpTenantMemBlockManager(ObTmpTenantFileStore &tenant_store)
|
||||
: tenant_store_(tenant_store),
|
||||
wait_info_queue_(),
|
||||
t_mblk_map_(),
|
||||
dir_to_blk_map_(),
|
||||
blk_nums_threshold_(0),
|
||||
@ -1512,8 +1512,8 @@ int ObTmpTenantMemBlockManager::exec_wait()
|
||||
const int64_t washing_count = ATOMIC_LOAD(&washing_count_);
|
||||
int64_t block_cache_num = -1;
|
||||
int64_t page_cache_num = -1;
|
||||
OB_TMP_FILE_STORE.get_block_cache_num(tenant_id_, block_cache_num);
|
||||
OB_TMP_FILE_STORE.get_page_cache_num(tenant_id_, page_cache_num);
|
||||
block_cache_num = tenant_store_.get_block_cache_num();
|
||||
page_cache_num = tenant_store_.get_page_cache_num();
|
||||
ObTaskController::get().allow_next_syslog();
|
||||
STORAGE_LOG(INFO, "succeed to do one round of tmp block io", K(ret), K(loop_nums),
|
||||
K(wait_io_cnt), K(washing_count), K(block_cache_num), K(page_cache_num));
|
||||
|
@ -30,6 +30,7 @@ class ObTmpFileIOHandle;
|
||||
class ObTmpMacroBlock;
|
||||
class ObTmpFileExtent;
|
||||
class ObMacroBlockHandle;
|
||||
class ObTmpTenantFileStore;
|
||||
|
||||
class ObTmpPageCacheKey final : public common::ObIKVCacheKey
|
||||
{
|
||||
@ -321,7 +322,7 @@ public:
|
||||
IOWaitInfo *wait_info_;
|
||||
};
|
||||
|
||||
ObTmpTenantMemBlockManager();
|
||||
explicit ObTmpTenantMemBlockManager(ObTmpTenantFileStore &tenant_store);
|
||||
~ObTmpTenantMemBlockManager();
|
||||
int init(const uint64_t tenant_id,
|
||||
common::ObConcurrentFIFOAllocator &allocator,
|
||||
@ -424,6 +425,7 @@ private:
|
||||
const int64_t page_nums, ObTmpMacroBlock *&t_mblk);
|
||||
int get_block_and_set_washing(int64_t block_id, ObTmpMacroBlock *&m_blk);
|
||||
|
||||
ObTmpTenantFileStore &tenant_store_;
|
||||
ObSpLinkQueue wait_info_queue_;
|
||||
WaitHandleMap wait_handles_map_;
|
||||
TmpMacroBlockMap t_mblk_map_; // <block id, tmp macro block>
|
||||
|
@ -902,7 +902,7 @@ ObTmpTenantFileStore::ObTmpTenantFileStore()
|
||||
allocator_(),
|
||||
io_allocator_(),
|
||||
tmp_block_manager_(),
|
||||
tmp_mem_block_manager_()
|
||||
tmp_mem_block_manager_(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -1717,30 +1717,6 @@ int ObTmpFileStore::dec_page_cache_num(const uint64_t tenant_id, const int64_t n
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTmpFileStore::get_page_cache_num(const uint64_t tenant_id, int64_t &num)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObTmpTenantFileStoreHandle store_handle;
|
||||
if (OB_FAIL(get_store(tenant_id, store_handle))) {
|
||||
STORAGE_LOG(WARN, "fail to get tmp tenant file store", K(ret), K(tenant_id));
|
||||
} else {
|
||||
num = store_handle.get_tenant_store()->get_page_cache_num();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTmpFileStore::get_block_cache_num(const uint64_t tenant_id, int64_t &num)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObTmpTenantFileStoreHandle store_handle;
|
||||
if (OB_FAIL(get_store(tenant_id, store_handle))) {
|
||||
STORAGE_LOG(WARN, "fail to get tmp tenant file store", K(ret), K(tenant_id));
|
||||
} else {
|
||||
num = store_handle.get_tenant_store()->get_block_cache_num();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTmpFileStore::free(const uint64_t tenant_id, ObTmpFileExtent *extent)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
@ -355,8 +355,6 @@ public:
|
||||
int dec_page_cache_num(const uint64_t tenant_id, const int64_t num);
|
||||
int inc_block_cache_num(const uint64_t tenant_id, const int64_t num);
|
||||
int dec_block_cache_num(const uint64_t tenant_id, const int64_t num);
|
||||
int get_page_cache_num(const uint64_t tenant_id, int64_t &num);
|
||||
int get_block_cache_num(const uint64_t tenant_id, int64_t &num);
|
||||
private:
|
||||
ObTmpFileStore();
|
||||
~ObTmpFileStore();
|
||||
|
Loading…
x
Reference in New Issue
Block a user