Change the memory of ObEncodingRowBufHolder to hang on its own tenant which used to hang on 500.

This commit is contained in:
obdev 2023-04-04 01:41:16 +00:00 committed by ob-robot
parent 1fa46f121d
commit 8b00a6d6be
6 changed files with 31 additions and 8 deletions

View File

@ -153,7 +153,8 @@ int ObMapAttrOperator::get_ref_byte(const int8_t attr, int64_t &byte)
return ret;
}
int ObEncodingRowBufHolder::init(const int64_t macro_block_size)
int ObEncodingRowBufHolder::init(const int64_t macro_block_size,
const int64_t tenant_id)
{
int ret = OB_SUCCESS;
if (is_inited_) {
@ -162,7 +163,11 @@ int ObEncodingRowBufHolder::init(const int64_t macro_block_size)
if (OB_UNLIKELY(macro_block_size <= 0)) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("Invalid block size", K(ret), K(macro_block_size));
} else if (!is_valid_tenant_id(tenant_id)){
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid tenant id", K(ret), K(tenant_id));
} else {
allocator_.set_tenant_id(tenant_id);
buf_size_limit_ = macro_block_size * 3;
is_inited_ = true;
}

View File

@ -650,7 +650,7 @@ public:
const int64_t page_size = common::OB_MALLOC_MIDDLE_BLOCK_SIZE)
: allocator_(label, page_size), buf_size_limit_(0), alloc_size_(0), alloc_buf_(nullptr) {}
virtual ~ObEncodingRowBufHolder() {}
int init(const int64_t macro_block_size);
int init(const int64_t macro_block_size, const int64_t tenant_id = OB_SERVER_TENANT_ID);
void reset();
// try to re-alloc held memory buffer
int try_alloc(const int64_t required_size);

View File

@ -140,7 +140,7 @@ int ObMicroBlockEncoder::init(const ObMicroBlockEncodingCtx &ctx)
LOG_WARN("reserve array failed", K(ret), "size", ctx.column_cnt_);
} else if (OB_FAIL(init_all_col_values(ctx))) {
LOG_WARN("init all_col_values failed", K(ret), K(ctx));
} else if (OB_FAIL(row_buf_holder_.init(ctx.macro_block_size_))) {
} else if (OB_FAIL(row_buf_holder_.init(ctx.macro_block_size_, MTL_ID()))) {
LOG_WARN("init row buf holder failed", K(ret));
} else {
// TODO bin.lb: shrink all_col_values_ size

View File

@ -50,11 +50,20 @@ public:
virtual void TearDown();
TestColumnDecoder()
: is_retro_(false) {}
: is_retro_(false), tenant_ctx_(OB_SERVER_TENANT_ID)
{
share::ObTenantEnv::set_tenant(&tenant_ctx_);
}
TestColumnDecoder(ObColumnHeader::Type column_encoding_type)
: is_retro_(false), column_encoding_type_(column_encoding_type) {}
: is_retro_(false), column_encoding_type_(column_encoding_type), tenant_ctx_(OB_SERVER_TENANT_ID)
{
share::ObTenantEnv::set_tenant(&tenant_ctx_);
}
TestColumnDecoder(bool is_retro)
: is_retro_(is_retro) {}
: is_retro_(is_retro), tenant_ctx_(OB_SERVER_TENANT_ID)
{
share::ObTenantEnv::set_tenant(&tenant_ctx_);
}
virtual ~TestColumnDecoder() {}
inline void setup_obj(ObObj& obj, int64_t column_id, int64_t seed);
@ -103,6 +112,7 @@ protected:
int64_t column_cnt_;
int64_t full_column_cnt_;
int64_t rowkey_cnt_;
share::ObTenantBase tenant_ctx_;
};
void TestColumnDecoder::set_column_type_default()

View File

@ -42,7 +42,10 @@ class TestIColumnEncoder : public ::testing::Test
{
public:
TestIColumnEncoder(const bool is_multi_version_row = false)
: is_multi_version_row_(is_multi_version_row) {}
: is_multi_version_row_(is_multi_version_row), tenant_ctx_(OB_SERVER_TENANT_ID)
{
share::ObTenantEnv::set_tenant(&tenant_ctx_);
}
virtual ~TestIColumnEncoder() {}
virtual void SetUp();
virtual void TearDown() {}
@ -57,6 +60,7 @@ protected:
ObArenaAllocator allocator_;
common::ObArray<share::schema::ObColDesc> col_descs_;
bool is_multi_version_row_;
share::ObTenantBase tenant_ctx_;
};
void TestIColumnEncoder::SetUp()

View File

@ -205,7 +205,10 @@ public:
virtual void SetUp();
virtual void TearDown() {}
TestRawDecoder() {}
TestRawDecoder():tenant_ctx_(OB_SERVER_TENANT_ID)
{
share::ObTenantEnv::set_tenant(&tenant_ctx_);
}
virtual ~TestRawDecoder() {}
void setup_obj(ObObj& obj, int64_t column_id, int64_t seed);
@ -224,6 +227,7 @@ protected:
ObTableReadInfo read_info_;
int64_t full_column_cnt_;
ObArenaAllocator allocator_;
share::ObTenantBase tenant_ctx_;
};
void TestRawDecoder::SetUp()