Files
oceanbase/src/storage/ob_server_pg_meta_checkpoint_reader.cpp
oceanbase-admin cea7de1475 init push
2021-05-31 22:56:52 +08:00

61 lines
2.3 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 STORAGE
#include "storage/ob_server_pg_meta_checkpoint_reader.h"
#include "storage/ob_server_pg_meta_checkpoint_writer.h"
#include "storage/ob_tenant_file_mgr.h"
#include "storage/ob_tenant_file_pg_meta_checkpoint_reader.h"
using namespace oceanbase::common;
using namespace oceanbase::blocksstable;
using namespace oceanbase::storage;
ObServerPGMetaCheckpointReader::ObServerPGMetaCheckpointReader()
{}
int ObServerPGMetaCheckpointReader::read_checkpoint(ObBaseFileMgr& file_mgr, ObPartitionMetaRedoModule& pg_mgr)
{
int ret = OB_SUCCESS;
ObArenaAllocator allocator;
ObArray<ObTenantFileInfo*> tenant_file_infos;
ObStorageFilesHandle files_handle;
if (OB_FAIL(file_mgr.get_all_tenant_file_infos(allocator, tenant_file_infos))) {
LOG_WARN("fail to get all tenant file infos", K(ret));
} else {
ObTenantFilePGMetaCheckpointReader reader;
for (int64_t i = 0; OB_SUCC(ret) && i < tenant_file_infos.count(); ++i) {
ObTenantFileInfo& file_info = *tenant_file_infos.at(i);
if (file_info.is_normal_status()) {
bool from_svr_ckpt = false;
if (OB_FAIL(file_mgr.is_from_svr_ckpt(file_info.tenant_key_, from_svr_ckpt))) {
LOG_WARN("check is from svr ckpt fail", K(ret), K(file_info));
} else if (!from_svr_ckpt) {
FLOG_INFO("skip load file ckpt", K(file_info), K(from_svr_ckpt));
} else if (OB_FAIL(reader.read_checkpoint(
file_info.tenant_key_, file_info.tenant_file_super_block_, file_mgr, pg_mgr))) {
LOG_WARN("fail to read checkpoint", K(ret));
}
}
}
}
for (int64_t i = 0; i < tenant_file_infos.count(); ++i) {
if (nullptr != tenant_file_infos.at(i)) {
tenant_file_infos.at(i)->~ObTenantFileInfo();
tenant_file_infos.at(i) = nullptr;
}
}
tenant_file_infos.reset();
return ret;
}