Files
oceanbase/tools/obcdc/src/ob_log_fetch_stream_pool.cpp
2022-03-25 18:10:38 +08:00

79 lines
2.0 KiB
C++

/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#define USING_LOG_PREFIX OBLOG_FETCHER
#include "ob_log_fetch_stream_pool.h"
#include "share/ob_define.h" // OB_SERVER_TENANT_ID
#include "lib/allocator/ob_mod_define.h" // ObModIds
#include "lib/utility/ob_macro_utils.h" // OB_FAIL
#include "lib/oblog/ob_log_module.h" // LOG_ERROR
using namespace oceanbase::common;
namespace oceanbase
{
namespace liboblog
{
FetchStreamPool::FetchStreamPool() : pool_()
{}
FetchStreamPool::~FetchStreamPool()
{
destroy();
}
int FetchStreamPool::init(const int64_t cached_fs_count)
{
int ret = OB_SUCCESS;
if (OB_FAIL(pool_.init(cached_fs_count,
ObModIds::OB_LOG_FETCH_STREAM_POOL,
OB_SERVER_TENANT_ID,
DEFAULT_BLOCK_SIZE))) {
LOG_ERROR("init fetch stream obj pool fail", KR(ret), K(cached_fs_count));
} else {
// succ
}
return ret;
}
void FetchStreamPool::destroy()
{
pool_.destroy();
}
int FetchStreamPool::alloc(FetchStream *&fs)
{
return pool_.alloc(fs);
}
int FetchStreamPool::free(FetchStream *fs)
{
return pool_.free(fs);
}
void FetchStreamPool::print_stat()
{
int64_t alloc_count = pool_.get_alloc_count();
int64_t free_count = pool_.get_free_count();
int64_t fixed_count = pool_.get_fixed_count();
int64_t used_count = alloc_count - free_count;
int64_t dynamic_count = (alloc_count > fixed_count) ? alloc_count - fixed_count : 0;
_LOG_INFO("[STAT] [FETCH_STREAM_POOL] USED=%ld FREE=%ld FIXED=%ld DYNAMIC=%ld",
used_count, free_count, fixed_count, dynamic_count);
}
}
}