patch 4.0

This commit is contained in:
wangzelin.wzl
2022-10-24 10:34:53 +08:00
parent 4ad6e00ec3
commit 93a1074b0c
10533 changed files with 2588271 additions and 2299373 deletions

View File

@ -11,33 +11,23 @@
*/
#include "storage/ob_partition_component_factory.h"
#include "storage/ob_partition_service.h"
#include "storage/memtable/ob_memtable.h"
#include "storage/replayengine/ob_log_replay_engine.h"
#include "clog/ob_log_replay_engine_wrapper.h"
#include "storage/ob_partition_migrator.h"
#include "storage/ob_partition_base_data_ob_reader.h"
#include "storage/ob_partition_base_data_restore_reader.h"
#include "storage/ob_table_mgr.h"
#include "storage/ob_replay_status.h"
#include "storage/ob_partition_group.h"
#include "storage/ob_partition_base_data_backup.h"
#include "storage/ob_migrate_macro_block_writer.h"
#include "storage/ob_partition_base_data_backup.h"
#include "storage/ob_partition_base_data_ob_reader.h"
#include "storage/ob_partition_backup.h"
#include "share/allocator/ob_tenant_mutil_allocator.h"
#include "lib/allocator/ob_pcounter.h"
#include "ls/ob_ls.h"
#include "storage/tx/ob_trans_service.h"
namespace oceanbase {
namespace oceanbase
{
using namespace oceanbase::common;
using namespace oceanbase::clog;
using namespace oceanbase::transaction;
using namespace oceanbase::memtable;
using namespace oceanbase::replayengine;
using namespace oceanbase::election;
namespace storage {
ObMemtable* ObPartitionComponentFactory::get_memtable(const uint64_t tenant_id)
namespace storage
{
static const char *MEMORY_LABEL_COMPONENT_FACTORY = "PartitionComponentFactory";
ObMemtable *ObPartitionComponentFactory::get_memtable(const uint64_t tenant_id)
{
ObMemtable* obj = ObMemtableFactory::alloc(tenant_id);
if (NULL != obj) {
@ -46,233 +36,28 @@ ObMemtable* ObPartitionComponentFactory::get_memtable(const uint64_t tenant_id)
return obj;
}
ObSSTable* ObPartitionComponentFactory::get_sstable(const uint64_t tenant_id)
ObTransService *ObPartitionComponentFactory::get_trans_service()
{
ObMemAttr memattr(tenant_id, ObModIds::OB_SSTABLE, ObCtxIds::SSTABLE_CTX_ID);
return OB_NEW_ALIGN32(ObSSTable, memattr);
return OB_NEW(ObTransService, MEMORY_LABEL_COMPONENT_FACTORY);
}
ObTransService* ObPartitionComponentFactory::get_trans_service()
{
return op_alloc(ObTransService);
}
ObICLogMgr* ObPartitionComponentFactory::get_clog_mgr()
{
return op_alloc(ObCLogMgr);
}
ObPartitionService* ObPartitionComponentFactory::get_partition_service()
{
return op_alloc(ObPartitionService);
}
ObPartitionStorage* ObPartitionComponentFactory::get_partition_storage(const uint64_t tenant_id)
{
ObMemAttr memattr(tenant_id, ObModIds::OB_PARTITION_STORAGE, ObCtxIds::STORAGE_LONG_TERM_META_CTX_ID);
return OB_NEW_ALIGN32(ObPartitionStorage, memattr);
}
ObIPartitionGroup* ObPartitionComponentFactory::get_partition(const uint64_t tenant_id)
ObLS *ObPartitionComponentFactory::get_ls(const uint64_t tenant_id)
{
ObMemAttr memattr(tenant_id, ObModIds::OB_PARTITION, ObCtxIds::STORAGE_LONG_TERM_META_CTX_ID);
ObIPartitionGroup* obj = OB_NEW_ALIGN32(ObPartitionGroup, memattr);
ObLS *obj = OB_NEW_ALIGN32(ObLS, memattr);
if (!OB_ISNULL(obj)) {
PC_ADD(PT, 1);
}
return obj;
}
ObReplayStatus* ObPartitionComponentFactory::get_replay_status(const uint64_t tenant_id)
void ObPartitionComponentFactory::free(ObIPartitionGroup *partition)
{
ObMemAttr memattr(tenant_id, ObModIds::OB_REPLAY_STATUS, ObCtxIds::REPLAY_STATUS_CTX_ID);
ObReplayStatus* obj = OB_NEW_ALIGN32(ObReplayStatus, memattr);
if (!OB_ISNULL(obj)) {
PC_ADD(RT, 1);
}
return obj;
}
ObILogReplayEngine* ObPartitionComponentFactory::get_replay_engine()
{
return op_alloc(ObLogReplayEngine);
UNUSEDx(partition);
}
ObIElectionMgr* ObPartitionComponentFactory::get_election_mgr()
{
return op_alloc(ObElectionMgr);
}
ObIPartitionLogService* ObPartitionComponentFactory::get_log_service(const uint64_t tenant_id)
{
common::ObILogAllocator* alloc_mgr = NULL;
ObIPartitionLogService* ret_ptr = NULL;
if (OB_SUCCESS == TMA_MGR_INSTANCE.get_tenant_log_allocator(tenant_id, alloc_mgr)) {
ret_ptr = alloc_mgr->alloc_partition_log_service();
}
return ret_ptr;
}
ObLogReplayEngineWrapper* ObPartitionComponentFactory::get_replay_engine_wrapper()
{
return op_alloc(ObLogReplayEngineWrapper);
}
ObWarmUpService* ObPartitionComponentFactory::get_warm_up_service()
{
return op_alloc(ObWarmUpService);
}
// ObMinorFreeze *ObPartitionComponentFactory::get_minor_freeze()
// {
// return op_alloc(ObMinorFreeze);
// }
ObMigrateCtx* ObPartitionComponentFactory::get_migrate_ctx()
{
return op_alloc(ObMigrateCtx);
}
ObPhysicalBaseMetaReader* ObPartitionComponentFactory::get_base_data_meta_ob_reader()
{
return op_alloc(ObPhysicalBaseMetaReader);
}
ObPartitionMacroBlockObReader* ObPartitionComponentFactory::get_macro_block_ob_reader()
{
return op_alloc(ObPartitionMacroBlockObReader);
}
ObPartGroupMigrationTask* ObPartitionComponentFactory::get_part_group_migration_task()
{
return op_alloc(ObPartGroupMigrationTask);
}
ObPartitionBaseDataMetaRestoreReader* ObPartitionComponentFactory::get_meta_restore_reader()
{
return op_alloc(ObPartitionBaseDataMetaRestoreReader);
}
ObPartitionBaseDataMetaObReader* ObPartitionComponentFactory::get_old_rpc_base_data_meta_reader()
{
return op_alloc(ObPartitionBaseDataMetaObReader);
}
ObPGPartitionBaseDataMetaObReader* ObPartitionComponentFactory::get_pg_info_reader()
{
return op_alloc(ObPGPartitionBaseDataMetaObReader);
}
ObPartGroupBackupTask* ObPartitionComponentFactory::get_part_group_backup_task()
{
return op_alloc(ObPartGroupBackupTask);
}
ObPhysicalBaseMetaBackupReader* ObPartitionComponentFactory::get_base_data_meta_backup_reader()
{
return op_alloc(ObPhysicalBaseMetaBackupReader);
}
ObPartitionMacroBlockBackupReader* ObPartitionComponentFactory::get_macro_block_backup_reader()
{
return op_alloc(ObPartitionMacroBlockBackupReader);
}
ObPartitionBaseDataMetaBackupReader* ObPartitionComponentFactory::get_meta_backup_reader()
{
return op_alloc(ObPartitionBaseDataMetaBackupReader);
}
ObPGPartitionBaseDataMetaBackupReader* ObPartitionComponentFactory::get_pg_info_backup_reader()
{
return op_alloc(ObPGPartitionBaseDataMetaBackupReader);
}
ObPartitionGroupMetaBackupReader* ObPartitionComponentFactory::get_partition_group_meta_backup_reader()
{
return op_alloc(ObPartitionGroupMetaBackupReader);
}
ObPhysicalBaseMetaRestoreReaderV1* ObPartitionComponentFactory::get_base_data_meta_restore_reader_v1()
{
return op_alloc(ObPhysicalBaseMetaRestoreReaderV1);
}
ObPartitionMacroBlockRestoreReaderV1* ObPartitionComponentFactory::get_macro_block_restore_reader_v1()
{
return op_alloc(ObPartitionMacroBlockRestoreReaderV1);
}
ObPartitionMacroBlockRestoreReaderV2* ObPartitionComponentFactory::get_macro_block_restore_reader_v2()
{
return op_alloc(ObPartitionMacroBlockRestoreReaderV2);
}
ObPartitionBaseDataMetaRestoreReaderV1* ObPartitionComponentFactory::get_meta_restore_reader_v1()
{
return op_alloc(ObPartitionBaseDataMetaRestoreReaderV1);
}
ObPGPartitionBaseDataMetaRestoreReaderV1* ObPartitionComponentFactory::get_pg_info_restore_reader_v1()
{
return op_alloc(ObPGPartitionBaseDataMetaRestoreReaderV1);
}
ObPartitionGroupMetaRestoreReaderV1* ObPartitionComponentFactory::get_partition_group_meta_restore_reader_v1()
{
return op_alloc(ObPartitionGroupMetaRestoreReaderV1);
}
ObPartitionGroupMetaRestoreReaderV2* ObPartitionComponentFactory::get_partition_group_meta_restore_reader_v2()
{
return op_alloc(ObPartitionGroupMetaRestoreReaderV2);
}
ObPhysicalBaseMetaRestoreReaderV2* ObPartitionComponentFactory::get_base_data_meta_restore_reader_v2()
{
return op_alloc(ObPhysicalBaseMetaRestoreReaderV2);
}
ObPGPartitionBaseDataMetaRestoreReaderV2* ObPartitionComponentFactory::get_pg_info_restore_reader_v2()
{
return op_alloc(ObPGPartitionBaseDataMetaRestoreReaderV2);
}
ObPhyRestoreMacroIndexStore* ObPartitionComponentFactory::get_phy_restore_macro_index()
{
return op_alloc(ObPhyRestoreMacroIndexStore);
}
ObPhyRestoreMacroIndexStoreV2* ObPartitionComponentFactory::get_phy_restore_macro_index_v2()
{
return op_alloc(ObPhyRestoreMacroIndexStoreV2);
}
void ObPartitionComponentFactory::free(ObIPartitionGroup* partition)
{
if (NULL != partition) {
OB_DELETE_ALIGN32(ObIPartitionGroup, unused, partition);
partition = NULL;
PC_ADD(PT, -1);
}
}
void ObPartitionComponentFactory::free(ObReplayStatus* replay_status)
{
if (NULL != replay_status) {
OB_DELETE_ALIGN32(ObReplayStatus, unused, replay_status);
replay_status = NULL;
PC_ADD(RT, -1);
}
}
void ObPartitionComponentFactory::free(ObSSTable* sstable)
{
if (NULL != sstable) {
OB_DELETE_ALIGN32(ObSSTable, unused, sstable);
sstable = NULL;
}
}
void ObPartitionComponentFactory::free(memtable::ObMemtable* memtable)
void ObPartitionComponentFactory::free(memtable::ObMemtable *memtable)
{
if (NULL != memtable) {
PC_ADD(MT, -1);
@ -281,259 +66,11 @@ void ObPartitionComponentFactory::free(memtable::ObMemtable* memtable)
}
}
void ObPartitionComponentFactory::free(ObTransService* txs)
void ObPartitionComponentFactory::free(ObTransService *txs)
{
op_free(txs);
OB_DELETE(ObTransService, MEMORY_LABEL_COMPONENT_FACTORY, txs);
txs = NULL;
}
void ObPartitionComponentFactory::free(ObICLogMgr* clog_mgr)
{
op_free(static_cast<ObCLogMgr*>(clog_mgr));
clog_mgr = NULL;
}
void ObPartitionComponentFactory::free(ObPartitionService* ptt_service)
{
op_free(ptt_service);
ptt_service = NULL;
}
void ObPartitionComponentFactory::free(ObPartitionStorage* ptt_storage)
{
if (NULL != ptt_storage) {
OB_DELETE_ALIGN32(ObPartitionStorage, unused, ptt_storage);
ptt_storage = NULL;
}
}
void ObPartitionComponentFactory::free(ObILogReplayEngine* rp_eg)
{
op_free(static_cast<ObLogReplayEngine*>(rp_eg));
rp_eg = NULL;
}
void ObPartitionComponentFactory::free(ObIElectionMgr* election_mgr)
{
op_free(static_cast<ObElectionMgr*>(election_mgr));
election_mgr = NULL;
}
void ObPartitionComponentFactory::free(ObIPartitionLogService* log_service)
{
if (NULL != log_service) {
common::ob_slice_free_partition_log_service(log_service);
log_service = NULL;
}
}
void ObPartitionComponentFactory::free(ObLogReplayEngineWrapper* rp_eg)
{
op_free(static_cast<ObLogReplayEngineWrapper*>(rp_eg));
rp_eg = NULL;
}
void ObPartitionComponentFactory::free(ObWarmUpService* warm_up_service)
{
op_free(warm_up_service);
warm_up_service = NULL;
}
// void ObPartitionComponentFactory::free(ObIPSFreezeCb *minor_freeze)
// {
// op_free(static_cast<ObMinorFreeze *>(minor_freeze));
// minor_freeze = NULL;
// }
void ObPartitionComponentFactory::free(ObMigrateCtx* ctx)
{
component_free(ctx);
}
void ObPartitionComponentFactory::free(ObIPhysicalBaseMetaReader* reader)
{
if (NULL != reader) {
if (ObIPhysicalBaseMetaReader::BASE_DATA_META_OB_READER == reader->get_type()) {
component_free(static_cast<ObPhysicalBaseMetaReader*>(reader));
} else if (ObIPhysicalBaseMetaReader::BASE_DATA_META_OB_COMPAT_READER == reader->get_type()) {
component_free(static_cast<ObPartitionBaseDataMetaObReader*>(reader));
} else if (ObIPhysicalBaseMetaReader::BASE_DATA_META_RESTORE_READER_V1 == reader->get_type()) {
component_free(static_cast<ObPhysicalBaseMetaRestoreReaderV1*>(reader));
} else if (ObIPhysicalBaseMetaReader::BASE_DATA_META_RESTORE_READER_V2 == reader->get_type()) {
component_free(static_cast<ObPhysicalBaseMetaRestoreReaderV2*>(reader));
} else {
STORAGE_LOG(ERROR, "unknown reader type", "type", reader->get_type());
}
}
}
void ObPartitionComponentFactory::free(ObIPartitionMacroBlockReader* reader)
{
if (NULL != reader) {
if (ObIPartitionMacroBlockReader::MACRO_BLOCK_OB_READER == reader->get_type()) {
component_free(static_cast<ObPartitionMacroBlockObReader*>(reader));
} else if (ObIPartitionMacroBlockReader::MACRO_BLOCK_BACKUP_READER == reader->get_type()) {
component_free(static_cast<ObPartitionMacroBlockBackupReader*>(reader));
} else if (ObIPartitionMacroBlockReader::MACRO_BLOCK_RESTORE_READER_V2 == reader->get_type()) {
component_free(static_cast<ObPartitionMacroBlockRestoreReaderV2*>(reader));
} else if (ObIPartitionMacroBlockReader::MACRO_BLOCK_RESTORE_READER_V1 == reader->get_type()) {
component_free(static_cast<ObPartitionMacroBlockRestoreReaderV1*>(reader));
} else {
STORAGE_LOG(ERROR, "unknown reader type", "type", reader->get_type());
}
}
}
void ObPartitionComponentFactory::free(ObPartGroupMigrationTask*& task)
{
component_free(task);
task = NULL;
}
void ObPartitionComponentFactory::free(ObPartitionBaseDataMetaRestoreReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionBaseDataMetaObReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPGPartitionBaseDataMetaObReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObIPGPartitionBaseDataMetaObReader* reader)
{
if (NULL != reader) {
if (ObIPGPartitionBaseDataMetaObReader::BASE_DATA_META_OB_READER == reader->get_type()) {
free(static_cast<ObPGPartitionBaseDataMetaObReader*>(reader));
} else if (ObIPGPartitionBaseDataMetaObReader::BASE_DATA_META_OB_BACKUP_READER == reader->get_type()) {
free(static_cast<ObPGPartitionBaseDataMetaBackupReader*>(reader));
} else if (ObIPGPartitionBaseDataMetaObReader::BASE_DATA_META_OB_RESTORE_READER_V1 == reader->get_type()) {
free(static_cast<ObPGPartitionBaseDataMetaRestoreReaderV1*>(reader));
} else if (ObIPGPartitionBaseDataMetaObReader::BASE_DATA_META_OB_RESTORE_READER_V2 == reader->get_type()) {
free(static_cast<ObPGPartitionBaseDataMetaRestoreReaderV2*>(reader));
} else {
STORAGE_LOG(ERROR, "unknown reader type", "type", reader->get_type());
}
}
}
void ObPartitionComponentFactory::free(ObPartGroupBackupTask*& task)
{
component_free(task);
task = NULL;
}
void ObPartitionComponentFactory::free(ObPartGroupTask*& task)
{
if (NULL != task) {
if (ObPartGroupTask::PART_GROUP_MIGATION_TASK == task->get_task_type()) {
ObPartGroupMigrationTask* tmp_task = static_cast<ObPartGroupMigrationTask*>(task);
free(tmp_task);
task = NULL;
} else if (ObPartGroupTask::PART_GROUP_BACKUP_TASK == task->get_task_type()) {
ObPartGroupBackupTask* tmp_task = static_cast<ObPartGroupBackupTask*>(task);
free(tmp_task);
task = NULL;
} else {
STORAGE_LOG(ERROR, "unknown task type", "type", task->get_task_type());
}
}
}
void ObPartitionComponentFactory::free(ObPhysicalBaseMetaBackupReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionMacroBlockBackupReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionBaseDataMetaBackupReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPGPartitionBaseDataMetaBackupReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionGroupMetaBackupReader* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPhysicalBaseMetaRestoreReaderV1* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionMacroBlockRestoreReaderV2* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionBaseDataMetaRestoreReaderV1* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPGPartitionBaseDataMetaRestoreReaderV1* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPartitionGroupMetaRestoreReaderV1* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObIPartitionGroupMetaRestoreReader* reader)
{
if (NULL != reader) {
if (ObIPartitionGroupMetaRestoreReader::PG_META_RESTORE_READER_V1 == reader->get_type()) {
component_free(static_cast<ObPartitionGroupMetaRestoreReaderV1*>(reader));
} else if (ObIPartitionGroupMetaRestoreReader::PG_META_RESTORE_READER_V2 == reader->get_type()) {
component_free(static_cast<ObPartitionGroupMetaRestoreReaderV2*>(reader));
} else {
STORAGE_LOG(ERROR, "unknown reader type", "type", reader->get_type());
}
}
}
void ObPartitionComponentFactory::free(ObPartitionGroupMetaRestoreReaderV2* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPhysicalBaseMetaRestoreReaderV2* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObPGPartitionBaseDataMetaRestoreReaderV2* reader)
{
component_free(reader);
}
void ObPartitionComponentFactory::free(ObIPhyRestoreMacroIndexStore* macro_index)
{
if (NULL != macro_index) {
if (ObIPhyRestoreMacroIndexStore::PHY_RESTORE_MACRO_INDEX_STORE_V1 == macro_index->get_type()) {
component_free(static_cast<ObPhyRestoreMacroIndexStore*>(macro_index));
} else if (ObIPhyRestoreMacroIndexStore::PHY_RESTORE_MACRO_INDEX_STORE_V2 == macro_index->get_type()) {
component_free(static_cast<ObPhyRestoreMacroIndexStoreV2*>(macro_index));
} else {
STORAGE_LOG(ERROR, "unknown macro index type", "type", macro_index->get_type());
}
}
}
} // namespace storage
} // namespace oceanbase
} // namespace storage
} // namespace oceanbase