fix remaining backup memory do not use tenant level memory

This commit is contained in:
oceanoverflow
2023-07-25 02:42:36 +00:00
committed by ob-robot
parent fff652e4bc
commit 68bd17a753
5 changed files with 15 additions and 12 deletions

View File

@ -850,7 +850,7 @@ int ObLSBackupCtx::open(
} else if (OB_FAIL(tablet_stat_.init(
param.tenant_id_, param.backup_set_desc_.backup_set_id_, param.ls_id_, backup_data_type))) {
LOG_WARN("failed to init tablet stat", K(ret), K(param), K(backup_data_type));
} else if (OB_FAIL(tablet_holder_.init(param.ls_id_))) {
} else if (OB_FAIL(tablet_holder_.init(param.tenant_id_, param.ls_id_))) {
LOG_WARN("failed to init tablet holder", K(ret), K(param));
} else if (OB_FAIL(stat_mgr_.init(param.backup_dest_, param.backup_set_desc_, param.tenant_id_, param.ls_id_))) {
LOG_WARN("failed to init stat", K(ret));

View File

@ -738,18 +738,19 @@ void ObBackupMacroBlockIDMapping::reuse()
map_.reuse();
}
int ObBackupMacroBlockIDMapping::prepare_tablet_sstable(
int ObBackupMacroBlockIDMapping::prepare_tablet_sstable(const uint64_t tenant_id,
const storage::ObITable::TableKey &table_key, const common::ObIArray<blocksstable::ObLogicMacroBlockId> &list)
{
int ret = OB_SUCCESS;
static const int64_t bucket_count = 1000;
lib::ObMemAttr mem_attr(tenant_id, ObModIds::BACKUP);
if (!table_key.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("get invalid args", K(ret), K(table_key));
} else if (map_.created()) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("map is created before", K(ret));
} else if (OB_FAIL(map_.create(bucket_count, ObModIds::BACKUP))) {
} else if (OB_FAIL(map_.create(bucket_count, mem_attr))) {
LOG_WARN("failed to create map", K(ret));
} else {
table_key_ = table_key;

View File

@ -461,7 +461,7 @@ struct ObBackupMacroBlockIDMapping final {
ObBackupMacroBlockIDMapping();
~ObBackupMacroBlockIDMapping();
void reuse();
int prepare_tablet_sstable(
int prepare_tablet_sstable(const uint64_t tenant_id,
const storage::ObITable::TableKey &table_key, const common::ObIArray<blocksstable::ObLogicMacroBlockId> &list);
TO_STRING_KV(K_(table_key), K_(id_pair_list));
storage::ObITable::TableKey table_key_;

View File

@ -578,13 +578,14 @@ int ObBackupTabletStat::init(const uint64_t tenant_id, const int64_t backup_set_
const share::ObBackupDataType &backup_data_type)
{
int ret = OB_SUCCESS;
lib::ObMemAttr mem_attr(tenant_id, ObModIds::BACKUP);
if (IS_INIT) {
ret = OB_INIT_TWICE;
LOG_WARN("backup tablet stat init twice", K(ret));
} else if (OB_INVALID_ID == tenant_id || backup_set_id <= 0 || !ls_id.is_valid() || !backup_data_type.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("get invalid args", K(ret), K(tenant_id), K(backup_set_id), K(ls_id), K(backup_data_type));
} else if (OB_FAIL(stat_map_.create(DEFAULT_BUCKET_COUNT, ObModIds::BACKUP))) {
} else if (OB_FAIL(stat_map_.create(DEFAULT_BUCKET_COUNT, mem_attr))) {
LOG_WARN("failed to create stat map", K(ret));
} else {
tenant_id_ = tenant_id;
@ -596,7 +597,7 @@ int ObBackupTabletStat::init(const uint64_t tenant_id, const int64_t backup_set_
return ret;
}
int ObBackupTabletStat::prepare_tablet_sstables(const share::ObBackupDataType &backup_data_type,
int ObBackupTabletStat::prepare_tablet_sstables(const uint64_t tenant_id, const share::ObBackupDataType &backup_data_type,
const common::ObTabletID &tablet_id, const storage::ObTabletHandle &tablet_handle,
const common::ObIArray<storage::ObITable *> &sstable_array)
{
@ -633,7 +634,7 @@ int ObBackupTabletStat::prepare_tablet_sstables(const share::ObBackupDataType &b
ObSSTable *sstable_ptr = static_cast<ObSSTable *>(table_ptr);
if (OB_FAIL(ObBackupUtils::fetch_macro_block_logic_id_list(tablet_handle, *sstable_ptr, logic_id_list))) {
LOG_WARN("failed to fetch macro block logic id list", K(ret), K(tablet_handle), KPC(sstable_ptr));
} else if (OB_FAIL(id_mapping.prepare_tablet_sstable(table_key, logic_id_list))) {
} else if (OB_FAIL(id_mapping.prepare_tablet_sstable(tenant_id, table_key, logic_id_list))) {
LOG_WARN("failed to prepare tablet sstable", K(ret), K(table_key), K(logic_id_list));
} else {
LOG_INFO("prepare tablet sstable", K(backup_data_type), K(tablet_id), K(table_key), K(logic_id_list));
@ -1034,17 +1035,18 @@ ObBackupTabletHolder::ObBackupTabletHolder() : is_inited_(false), ls_id_(), hold
ObBackupTabletHolder::~ObBackupTabletHolder()
{}
int ObBackupTabletHolder::init(const share::ObLSID &ls_id)
int ObBackupTabletHolder::init(const uint64_t tenant_id, const share::ObLSID &ls_id)
{
int ret = OB_SUCCESS;
const int64_t MAX_BUCKET_NUM = 1024;
lib::ObMemAttr mem_attr(tenant_id, ObModIds::BACKUP);
if (IS_INIT) {
ret = OB_INIT_TWICE;
LOG_WARN("backup tablet holder init twice", K(ret));
} else if (!ls_id.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("get invalid args", K(ret), K(ls_id));
} else if (OB_FAIL(holder_map_.create(MAX_BUCKET_NUM, ObModIds::BACKUP))) {
} else if (OB_FAIL(holder_map_.create(MAX_BUCKET_NUM, mem_attr))) {
LOG_WARN("failed to create tablet handle map", K(ret));
} else {
is_inited_ = true;
@ -1751,7 +1753,7 @@ int ObBackupTabletProvider::prepare_tablet_(const uint64_t tenant_id, const shar
}
if (OB_SUCC(ret)) {
if (OB_FAIL(ls_backup_ctx_->tablet_stat_.prepare_tablet_sstables(
backup_data_type, tablet_id, tablet_handle, sstable_array))) {
tenant_id, backup_data_type, tablet_id, tablet_handle, sstable_array))) {
LOG_WARN("failed to prepare tablet sstable", K(ret), K(backup_data_type), K(tablet_id), K(sstable_array));
} else if (OB_FAIL(add_tablet_item_(tablet_id))) {
LOG_WARN("failed to add tablet item", K(ret), K(tablet_id));

View File

@ -99,7 +99,7 @@ public:
~ObBackupTabletStat();
int init(const uint64_t tenant_id, const int64_t backup_set_id, const share::ObLSID &ls_id,
const share::ObBackupDataType &backup_data_type);
int prepare_tablet_sstables(const share::ObBackupDataType &backup_data_type, const common::ObTabletID &tablet_id,
int prepare_tablet_sstables(const uint64_t tenant_id, const share::ObBackupDataType &backup_data_type, const common::ObTabletID &tablet_id,
const storage::ObTabletHandle &tablet_handle, const common::ObIArray<storage::ObITable *> &sstable_array);
int mark_items_pending(
const share::ObBackupDataType &backup_data_type, const common::ObIArray<ObBackupProviderItem> &items);
@ -148,7 +148,7 @@ class ObBackupTabletHolder final {
public:
ObBackupTabletHolder();
~ObBackupTabletHolder();
int init(const share::ObLSID &ls_id);
int init(const uint64_t tenant_id, const share::ObLSID &ls_id);
int hold_tablet(const common::ObTabletID &tablet_id, storage::ObTabletHandle &tablet_handle);
int get_tablet(const common::ObTabletID &tablet_id, storage::ObTabletHandle &tablet_handle);
int release_tablet(const common::ObTabletID &tablet_id);