fix remaining backup memory do not use tenant level memory
This commit is contained in:
@ -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));
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user