Do not report ERROR when sample rate equals 100
This commit is contained in:
@ -45,7 +45,6 @@
|
||||
// for 4.0
|
||||
#include "share/ob_ls_id.h"
|
||||
#include "storage/ddl/ob_tablet_ddl_kv_mgr.h"
|
||||
#include "storage/ddl/ob_direct_insert_sstable_ctx_new.h"
|
||||
#include "storage/ls/ob_ls.h"
|
||||
#include "storage/tablet/ob_tablet.h"
|
||||
#include "storage/tx/ob_trans_service.h"
|
||||
@ -54,7 +53,6 @@
|
||||
#include "share/sequence/ob_sequence_cache.h"
|
||||
#include "logservice/ob_log_service.h"
|
||||
#include "logservice/ob_log_handler.h"
|
||||
#include "logservice/archiveservice/ob_archive_service.h"
|
||||
#include "share/scn.h"
|
||||
#include "storage/ob_common_id_utils.h"
|
||||
#include "storage/high_availability/ob_storage_ha_service.h"
|
||||
@ -63,27 +61,18 @@
|
||||
#include "storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.h"
|
||||
#include "observer/ob_req_time_service.h"
|
||||
#include "observer/ob_server_event_history_table_operator.h"
|
||||
#include "rootserver/ob_primary_ls_service.h"//PrimaryLSService
|
||||
#include "rootserver/ob_tenant_transfer_service.h" // ObTenantTransferService
|
||||
#include "storage/high_availability/ob_transfer_service.h" // ObTransferService
|
||||
#include "sql/udr/ob_udr_mgr.h"
|
||||
#include "rootserver/tenant_snapshot/ob_tenant_snapshot_scheduler.h"
|
||||
#include "rootserver/restore/ob_clone_scheduler.h"
|
||||
#ifdef OB_BUILD_SPM
|
||||
#include "sql/spm/ob_spm_controller.h"
|
||||
#endif
|
||||
#include "sql/plan_cache/ob_ps_cache.h"
|
||||
#include "pl/pl_cache/ob_pl_cache_mgr.h"
|
||||
#include "rootserver/ob_admin_drtask_util.h" // ObAdminDRTaskUtil
|
||||
#include "rootserver/ob_primary_ls_service.h" // for ObPrimaryLSService
|
||||
#include "rootserver/ob_root_utils.h"
|
||||
#include "sql/session/ob_sql_session_info.h"
|
||||
#include "sql/session/ob_sess_info_verify.h"
|
||||
#include "observer/table/ttl/ob_ttl_service.h"
|
||||
#include "storage/tenant_snapshot/ob_tenant_snapshot_service.h"
|
||||
#include "storage/high_availability/ob_storage_ha_utils.h"
|
||||
#include "share/ob_rpc_struct.h"
|
||||
#include "rootserver/ob_recovery_ls_service.h"
|
||||
#include "logservice/ob_server_log_block_mgr.h"
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
@ -189,7 +178,52 @@ int ObRpcLSMigrateReplicaP::process()
|
||||
|
||||
int ObRpcLSAddReplicaP::process()
|
||||
{
|
||||
return observer::ObService::do_add_ls_replica(arg_);
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t tenant_id = arg_.tenant_id_;
|
||||
ObLSService *ls_service = nullptr;
|
||||
bool is_exist = false;
|
||||
ObMigrationOpArg migration_op_arg;
|
||||
|
||||
if (tenant_id != MTL_ID()) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_ERROR("ObRpcLSAddReplicaP::process tenant not match", K(tenant_id), K(ret));
|
||||
}
|
||||
ObCurTraceId::set(arg_.task_id_);
|
||||
if (OB_SUCC(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "schedule_ls_add start", "tenant_id", arg_.tenant_id_, "ls_id", arg_.ls_id_.id(),
|
||||
"data_src", arg_.data_source_.get_server(), "dest", arg_.dst_.get_server());
|
||||
|
||||
ls_service = MTL(ObLSService*);
|
||||
if (OB_ISNULL(ls_service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObLSService should not be null", K(ret));
|
||||
} else if (OB_FAIL(ls_service->check_ls_exist(arg_.ls_id_, is_exist))) {
|
||||
COMMON_LOG(WARN, "failed to check ls exist", K(ret), K(arg_));
|
||||
} else if (is_exist) {
|
||||
ret = OB_LS_EXIST;
|
||||
COMMON_LOG(WARN, "can not add ls which local ls is exist", K(ret), K(arg_), K(is_exist));
|
||||
} else {
|
||||
migration_op_arg.cluster_id_ = GCONF.cluster_id;
|
||||
migration_op_arg.data_src_ = arg_.data_source_;
|
||||
migration_op_arg.dst_ = arg_.dst_;
|
||||
migration_op_arg.ls_id_ = arg_.ls_id_;
|
||||
//TODO(muwei.ym) need check priority in 4.2 RC3
|
||||
migration_op_arg.priority_ = ObMigrationOpPriority::PRIO_HIGH;
|
||||
migration_op_arg.paxos_replica_number_ = arg_.new_paxos_replica_number_;
|
||||
migration_op_arg.src_ = arg_.data_source_;
|
||||
migration_op_arg.type_ = ObMigrationOpType::ADD_LS_OP;
|
||||
|
||||
if (OB_FAIL(ls_service->create_ls_for_ha(arg_.task_id_, migration_op_arg))) {
|
||||
COMMON_LOG(WARN, "failed to create ls for ha", K(ret), K(arg_), K(migration_op_arg));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "schedule_ls_add failed", "tenant_id", arg_.tenant_id_,
|
||||
"ls_id", arg_.ls_id_, "result", ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcLSTypeTransformP::process()
|
||||
@ -235,12 +269,80 @@ int ObRpcLSTypeTransformP::process()
|
||||
|
||||
int ObRpcLSRemovePaxosReplicaP::process()
|
||||
{
|
||||
return observer::ObService::do_remove_ls_paxos_replica(arg_);
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t tenant_id = arg_.tenant_id_;
|
||||
MAKE_TENANT_SWITCH_SCOPE_GUARD(guard);
|
||||
ObLSService *ls_service = nullptr;
|
||||
ObLSHandle ls_handle;
|
||||
ObLS *ls = nullptr;
|
||||
|
||||
if (tenant_id != MTL_ID()) {
|
||||
ret = guard.switch_to(tenant_id);
|
||||
}
|
||||
ObCurTraceId::set(arg_.task_id_);
|
||||
if (OB_SUCC(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "remove_ls_paxos_member start", "tenant_id", arg_.tenant_id_, "ls_id", arg_.ls_id_.id(),
|
||||
"dest", arg_.remove_member_.get_server());
|
||||
LOG_INFO("start do remove ls paxos member", K(arg_));
|
||||
|
||||
ls_service = MTL(ObLSService*);
|
||||
if (OB_ISNULL(ls_service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObLSService should not be null", K(ret));
|
||||
} else if (OB_FAIL(ls_service->get_ls(arg_.ls_id_, ls_handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
LOG_WARN("failed to get ls", K(ret), K(arg_));
|
||||
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("ls should not be NULL", K(ret), K(arg_));
|
||||
} else if (OB_FAIL(ls->get_ls_remove_member_handler()->remove_paxos_member(arg_))) {
|
||||
LOG_WARN("failed to remove paxos member", K(ret), K(arg_));
|
||||
}
|
||||
}
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "remove_ls_paxos_member failed", "tenant_id",
|
||||
arg_.tenant_id_, "ls_id", arg_.ls_id_.id(), "result", ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcLSRemoveNonPaxosReplicaP::process()
|
||||
{
|
||||
return observer::ObService::do_remove_ls_nonpaxos_replica(arg_);
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t tenant_id = arg_.tenant_id_;
|
||||
MAKE_TENANT_SWITCH_SCOPE_GUARD(guard);
|
||||
ObLSService *ls_service = nullptr;
|
||||
ObLSHandle ls_handle;
|
||||
ObLS *ls = nullptr;
|
||||
|
||||
if (tenant_id != MTL_ID()) {
|
||||
ret = guard.switch_to(tenant_id);
|
||||
}
|
||||
ObCurTraceId::set(arg_.task_id_);
|
||||
if (OB_SUCC(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "remove_ls_learner_member start", "tenant_id", arg_.tenant_id_, "ls_id", arg_.ls_id_.id(),
|
||||
"dest", arg_.remove_member_.get_server());
|
||||
LOG_INFO("start do remove ls learner member", K(arg_));
|
||||
|
||||
ls_service = MTL(ObLSService*);
|
||||
if (OB_ISNULL(ls_service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObLSService should not be null", K(ret));
|
||||
} else if (OB_FAIL(ls_service->get_ls(arg_.ls_id_, ls_handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
LOG_WARN("failed to get ls", K(ret), K(arg_));
|
||||
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("ls should not be NULL", K(ret), K(arg_));
|
||||
} else if (OB_FAIL(ls->get_ls_remove_member_handler()->remove_learner_member(arg_))) {
|
||||
LOG_WARN("failed to remove paxos member", K(ret), K(arg_));
|
||||
}
|
||||
}
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
SERVER_EVENT_ADD("storage_ha", "remove_ls_learner_member failed", "tenant_id",
|
||||
arg_.tenant_id_, "ls_id", arg_.ls_id_.id(), "result", ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcLSModifyPaxosReplicaNumberP::process()
|
||||
@ -331,21 +433,6 @@ int ObRpcLSCheckDRTaskExistP::process()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObAdminDRTaskP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObCurTraceId::init(GCONF.self_addr_);
|
||||
LOG_INFO("start to handle ls replica task triggered by ob_admin", K_(arg));
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K_(arg));
|
||||
} else if (OB_FAIL(ObAdminDRTaskUtil::handle_obadmin_command(arg_))) {
|
||||
LOG_WARN("fail to handle ob admin command", KR(ret), K_(arg));
|
||||
}
|
||||
LOG_INFO("finish handle ls replica task triggered by ob_admin", K_(arg));
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef OB_BUILD_ARBITRATION
|
||||
int ObRpcAddArbP::process()
|
||||
{
|
||||
@ -425,15 +512,20 @@ int ObRpcSetTenantConfigP::process()
|
||||
{
|
||||
LOG_INFO("process set tenant config", K(arg_));
|
||||
OTC_MGR.add_extra_config(arg_);
|
||||
OTC_MGR.notify_tenant_config_changed(arg_.tenant_id_);
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
|
||||
int ObRpcNotifyTenantServerUnitResourceP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_FAIL(ObTenantNodeBalancer::get_instance().handle_notify_unit_resource(arg_))) {
|
||||
LOG_WARN("fail to handle_notify_unit_resource", K(ret), K_(arg));
|
||||
if (arg_.is_delete_) {
|
||||
if (OB_FAIL(ObTenantNodeBalancer::get_instance().try_notify_drop_tenant(arg_.tenant_id_))) {
|
||||
LOG_WARN("fail to try drop tenant", K(ret), K(arg_));
|
||||
}
|
||||
} else {
|
||||
if (OB_FAIL(ObTenantNodeBalancer::get_instance().notify_create_tenant(arg_))) {
|
||||
LOG_WARN("failed to notify update tenant", K(ret), K_(arg));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -932,6 +1024,7 @@ int ObDumpMemtableP::process()
|
||||
ObLSService* ls_svr = nullptr;
|
||||
ObTabletHandle tablet_handle;
|
||||
ObLSHandle ls_handle;
|
||||
ObIMemtableMgr *memtable_mgr = nullptr;
|
||||
common::ObSEArray<ObTableHandleV2, 7> tables_handle;
|
||||
|
||||
if (OB_ISNULL(ls_svr = MTL(ObLSService*))) {
|
||||
@ -954,8 +1047,11 @@ int ObDumpMemtableP::process()
|
||||
} else if (OB_UNLIKELY(!tablet_handle.is_valid())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
SERVER_LOG(WARN, "invalid tablet handle", K(ret), K(tablet_handle));
|
||||
} else if (OB_FAIL(tablet_handle.get_obj()->get_all_memtables(tables_handle))) {
|
||||
LOG_WARN("failed to get all memtable", K(ret), KPC(tablet_handle.get_obj()));
|
||||
} else if (OB_ISNULL(memtable_mgr = tablet_handle.get_obj()->get_memtable_mgr())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
SERVER_LOG(WARN, "memtable mgr is null", K(ret));
|
||||
} else if (OB_FAIL(memtable_mgr->get_all_memtables(tables_handle))) {
|
||||
SERVER_LOG(WARN, "fail to get all memtables for log stream", K(ret));
|
||||
} else {
|
||||
memtable::ObMemtable *mt;
|
||||
mkdir("/tmp/dump_memtable/", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
|
||||
@ -1254,27 +1350,7 @@ int ObFlushCacheP::process()
|
||||
break;
|
||||
}
|
||||
case CACHE_TYPE_PL_OBJ: {
|
||||
if (arg_.is_fine_grained_) { // fine-grained plan cache evict
|
||||
bool is_evict_by_schema_id = common::OB_INVALID_ID != arg_.schema_id_;
|
||||
MTL_SWITCH(arg_.tenant_id_) {
|
||||
ObPlanCache* plan_cache = MTL(ObPlanCache*);
|
||||
if (arg_.db_ids_.count() == 0) {
|
||||
if (is_evict_by_schema_id) {
|
||||
ret = plan_cache->flush_pl_cache_single_cache_obj<pl::ObGetPLKVEntryBySchemaIdOp, uint64_t>(OB_INVALID_ID, arg_.schema_id_);
|
||||
} else {
|
||||
ret = plan_cache->flush_pl_cache_single_cache_obj<pl::ObGetPLKVEntryBySQLIDOp, ObString>(OB_INVALID_ID, arg_.sql_id_);
|
||||
}
|
||||
} else {
|
||||
for (uint64_t i=0; i<arg_.db_ids_.count(); i++) {
|
||||
if (is_evict_by_schema_id) {
|
||||
ret = plan_cache->flush_pl_cache_single_cache_obj<pl::ObGetPLKVEntryBySchemaIdOp, uint64_t>(arg_.db_ids_.at(i), arg_.schema_id_);
|
||||
} else {
|
||||
ret = plan_cache->flush_pl_cache_single_cache_obj<pl::ObGetPLKVEntryBySQLIDOp, ObString>(arg_.db_ids_.at(i), arg_.sql_id_);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (arg_.is_all_tenant_) {
|
||||
if (arg_.is_all_tenant_) {
|
||||
common::ObArray<uint64_t> tenant_ids;
|
||||
if (OB_ISNULL(GCTX.omt_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
@ -1500,46 +1576,6 @@ int ObRpcCheckLSCanOfflineP::process()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcInnerCreateTenantSnapshotP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (MTL_ID() != arg_.get_tenant_id()) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_ERROR("ObRpcInnerCreateTenantSnapshotP::process tenant not match", KR(ret), K(arg_));
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
ObTenantSnapshotService *service = nullptr;
|
||||
service = MTL(ObTenantSnapshotService*);
|
||||
if (OB_ISNULL(service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObTenantSnapshotService should not be nullptr", KR(ret), K(arg_));
|
||||
} else if (OB_FAIL(service->create_tenant_snapshot(arg_))) {
|
||||
COMMON_LOG(WARN, "fail to create tenant snapshot", KR(ret), K(arg_));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcInnerDropTenantSnapshotP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (MTL_ID() != arg_.get_tenant_id()) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_ERROR("ObRpcInnerDropTenantSnapshotP::process tenant not match", KR(ret), K(arg_));
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
ObTenantSnapshotService *service = nullptr;
|
||||
service = MTL(ObTenantSnapshotService*);
|
||||
if (OB_ISNULL(service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObTenantSnapshotService should not be nullptr", KR(ret), K(arg_));
|
||||
} else if (OB_FAIL(service->drop_tenant_snapshot(arg_))) {
|
||||
COMMON_LOG(WARN, "fail to drop tenant snapshot", KR(ret), K(arg_));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcGetLSAccessModeP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1609,14 +1645,13 @@ int ObRpcChangeLSAccessModeP::process()
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
ls_svr = MTL(ObLSService*);
|
||||
logservice::ObLogService *log_ls_svr = MTL(logservice::ObLogService*);
|
||||
ObLS *ls = nullptr;
|
||||
ObLSID ls_id = arg_.get_ls_id();
|
||||
ObLSHandle handle;
|
||||
logservice::ObLogHandler *log_handler = NULL;
|
||||
if (OB_ISNULL(ls_svr) || OB_ISNULL(log_ls_svr)) {
|
||||
if (OB_ISNULL(ls_svr)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(ERROR, "mtl ObLSService or ObLogService should not be null", KR(ret), KP(ls_svr), KP(log_ls_svr));
|
||||
COMMON_LOG(ERROR, "mtl ObLSService should not be null", K(ret));
|
||||
} else if (OB_FAIL(ls_svr->get_ls(ls_id, handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
COMMON_LOG(WARN, "get ls failed", KR(ret), K(ls_id));
|
||||
} else if (OB_ISNULL(ls = handle.get_ls())) {
|
||||
@ -1628,13 +1663,11 @@ int ObRpcChangeLSAccessModeP::process()
|
||||
} else if (palf::AccessMode::RAW_WRITE == arg_.get_access_mode() && !ls_id.is_sys_ls()) {
|
||||
// switchover to standby
|
||||
// user ls end scn should be larger than sys ls end scn at first
|
||||
DEBUG_SYNC(BEFORE_WAIT_SYS_LS_END_SCN);
|
||||
if (OB_UNLIKELY(!arg_.get_sys_ls_end_scn().is_valid_and_not_min())) {
|
||||
FLOG_WARN("invalid sys_ls_end_scn, no need to let user ls wait, "
|
||||
"the version might be smaller than V4.2.0", KR(ret), K(arg_.get_sys_ls_end_scn()));
|
||||
} else if (OB_FAIL(rootserver::ObRootUtils::wait_user_ls_sync_scn_locally(
|
||||
} else if (OB_FAIL(share::ObShareUtil::wait_user_ls_sync_scn_locally(
|
||||
arg_.get_sys_ls_end_scn(),
|
||||
log_ls_svr,
|
||||
*ls))) {
|
||||
LOG_WARN("fail to wait user ls sync scn locally", KR(ret), K(ls_id), K(arg_.get_sys_ls_end_scn()));
|
||||
}
|
||||
@ -2117,43 +2150,6 @@ int ObSetRootKeyP::process()
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObCloneKeyP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const uint64_t source_tenant_id = arg_.get_source_tenant_id();
|
||||
ObCipherOpMode mode;
|
||||
common::ObSEArray<std::pair<uint64_t, ObMasterKey>, 2> master_key_list;
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_));
|
||||
//get master key info from source tenant
|
||||
} else if (OB_FAIL(ObMasterKeyGetter::get_table_key_algorithm(source_tenant_id, mode))) {
|
||||
LOG_WARN("failed to get table key algorithm", KR(ret), K(source_tenant_id));
|
||||
} else if (OB_FAIL(ObMasterKeyGetter::instance().dump_tenant_keys(source_tenant_id,
|
||||
master_key_list))) {
|
||||
LOG_WARN("failed to dump tenant key", KR(ret), K(source_tenant_id));
|
||||
//set master key info for clone tenant
|
||||
} else if (OB_FAIL(ObMasterKeyGetter::instance().load_tenant_keys(arg_.get_tenant_id(),
|
||||
mode,
|
||||
master_key_list))) {
|
||||
LOG_WARN("failed to load tenant keys", KR(ret), K(arg_));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTrimKeyListP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_));
|
||||
} else if (OB_FAIL(ObMasterKeyGetter::instance().trim_master_key_map(arg_.get_tenant_id(),
|
||||
arg_.get_latest_master_key_id()))) {
|
||||
LOG_WARN("fail to trim master key map", KR(ret), K(arg_));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
int ObHandlePartTransCtxP::process()
|
||||
@ -2247,12 +2243,14 @@ int ObRpcRemoteWriteDDLRedoLogP::process()
|
||||
} else {
|
||||
MTL_SWITCH(tenant_id) {
|
||||
ObRole role = INVALID_ROLE;
|
||||
ObDDLRedoLogWriter sstable_redo_writer;
|
||||
ObDDLSSTableRedoWriter sstable_redo_writer;
|
||||
MacroBlockId macro_block_id;
|
||||
ObMacroBlockHandle macro_handle;
|
||||
ObMacroBlockWriteInfo write_info;
|
||||
ObLSService *ls_service = MTL(ObLSService*);
|
||||
ObLSHandle ls_handle;
|
||||
ObTabletHandle tablet_handle;
|
||||
ObDDLKvMgrHandle ddl_kv_mgr_handle;
|
||||
ObLS *ls = nullptr;
|
||||
|
||||
// restruct write_info
|
||||
@ -2270,15 +2268,19 @@ int ObRpcRemoteWriteDDLRedoLogP::process()
|
||||
} else if (ObRole::LEADER != role) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_INFO("leader may not have finished replaying clog, caller retry", K(ret), K(MTL_ID()), K(arg_.ls_id_));
|
||||
} else if (OB_FAIL(ls->get_tablet(arg_.redo_info_.table_key_.tablet_id_, tablet_handle))) {
|
||||
LOG_WARN("get tablet failed", K(ret));
|
||||
} else if (OB_FAIL(tablet_handle.get_obj()->get_ddl_kv_mgr(ddl_kv_mgr_handle))) {
|
||||
LOG_WARN("get ddl kv manager failed", K(ret));
|
||||
} else if (OB_FAIL(ObBlockManager::async_write_block(write_info, macro_handle))) {
|
||||
LOG_WARN("fail to async write block", K(ret), K(write_info), K(macro_handle));
|
||||
} else if (OB_FAIL(macro_handle.wait())) {
|
||||
LOG_WARN("fail to wait macro block io finish", K(ret));
|
||||
} else if (OB_FAIL(sstable_redo_writer.init(arg_.ls_id_, arg_.redo_info_.table_key_.tablet_id_))) {
|
||||
LOG_WARN("init sstable redo writer", K(ret), K_(arg));
|
||||
} else if (OB_FAIL(sstable_redo_writer.write_macro_block_log(arg_.redo_info_, macro_handle.get_macro_id(), false, arg_.task_id_))) {
|
||||
} else if (OB_FAIL(sstable_redo_writer.write_redo_log(arg_.redo_info_, macro_handle.get_macro_id(), false, arg_.task_id_, tablet_handle, ddl_kv_mgr_handle))) {
|
||||
LOG_WARN("fail to write macro redo", K(ret), K_(arg));
|
||||
} else if (OB_FAIL(sstable_redo_writer.wait_macro_block_log_finish(arg_.redo_info_,
|
||||
} else if (OB_FAIL(sstable_redo_writer.wait_redo_log_finish(arg_.redo_info_,
|
||||
macro_handle.get_macro_id()))) {
|
||||
LOG_WARN("fail to wait macro redo finish", K(ret), K_(arg));
|
||||
}
|
||||
@ -2295,15 +2297,12 @@ int ObRpcRemoteWriteDDLCommitLogP::process()
|
||||
MTL_SWITCH(tenant_id) {
|
||||
ObRole role = INVALID_ROLE;
|
||||
const ObITable::TableKey &table_key = arg_.table_key_;
|
||||
ObDDLRedoLogWriter sstable_redo_writer;
|
||||
ObDDLSSTableRedoWriter sstable_redo_writer;
|
||||
ObLSService *ls_service = MTL(ObLSService*);
|
||||
ObLSHandle ls_handle;
|
||||
ObTabletHandle tablet_handle;
|
||||
ObDDLKvMgrHandle ddl_kv_mgr_handle;
|
||||
ObLS *ls = nullptr;
|
||||
ObTenantDirectLoadMgr *tenant_direct_load_mgr = MTL(ObTenantDirectLoadMgr *);
|
||||
ObTabletFullDirectLoadMgr *data_tablet_mgr = nullptr;
|
||||
ObTabletDirectLoadMgrHandle direct_load_mgr_handle;
|
||||
direct_load_mgr_handle.reset();
|
||||
bool is_major_sstable_exist = false;
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid arguments", K(ret), K_(arg));
|
||||
@ -2317,57 +2316,32 @@ int ObRpcRemoteWriteDDLCommitLogP::process()
|
||||
} else if (ObRole::LEADER != role) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_INFO("leader may not have finished replaying clog, caller retry", K(ret), K(MTL_ID()), K(arg_.ls_id_));
|
||||
} else if (OB_ISNULL(tenant_direct_load_mgr)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpected nullptr", K(ret), K(MTL_ID()));
|
||||
} else if (OB_FAIL(tenant_direct_load_mgr->get_tablet_mgr_and_check_major(
|
||||
arg_.ls_id_,
|
||||
table_key.tablet_id_,
|
||||
true /*is_full_direct_load*/,
|
||||
direct_load_mgr_handle,
|
||||
is_major_sstable_exist))) {
|
||||
if (OB_ENTRY_NOT_EXIST == ret && is_major_sstable_exist) {
|
||||
ret = OB_TASK_EXPIRED;
|
||||
LOG_INFO("major sstable already exist", K(ret), K(arg_));
|
||||
} else if (OB_FAIL(ls->get_tablet(table_key.tablet_id_, tablet_handle))) {
|
||||
LOG_WARN("get tablet failed", K(ret));
|
||||
} else if (OB_FAIL(tablet_handle.get_obj()->get_ddl_kv_mgr(ddl_kv_mgr_handle))) {
|
||||
if (OB_ENTRY_NOT_EXIST == ret) {
|
||||
ret = OB_EAGAIN;
|
||||
} else {
|
||||
LOG_WARN("get tablet direct load manager failed", K(ret), K(table_key));
|
||||
LOG_WARN("get ddl kv manager failed", K(ret));
|
||||
}
|
||||
} else if (OB_ISNULL(data_tablet_mgr = direct_load_mgr_handle.get_full_obj())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpected err", K(ret), K(table_key));
|
||||
} else if (OB_FAIL(sstable_redo_writer.init(arg_.ls_id_, table_key.tablet_id_))) {
|
||||
LOG_WARN("init sstable redo writer", K(ret), K(table_key));
|
||||
} else if (FALSE_IT(sstable_redo_writer.set_start_scn(arg_.start_scn_))) {
|
||||
} else {
|
||||
uint32_t lock_tid = 0;
|
||||
SCN commit_scn;
|
||||
bool is_remote_write = false;
|
||||
ObTabletHandle tablet_handle;
|
||||
if (OB_FAIL(data_tablet_mgr->wrlock(ObTabletDirectLoadMgr::TRY_LOCK_TIMEOUT, lock_tid))) {
|
||||
LOG_WARN("failed to wrlock", K(ret), K(arg_));
|
||||
} else if (OB_FAIL(ls->get_tablet(table_key.tablet_id_, tablet_handle, ObTabletCommon::DEFAULT_GET_TABLET_DURATION_US, ObMDSGetTabletMode::READ_WITHOUT_CHECK))) {
|
||||
LOG_WARN("get tablet failed", K(ret), K(table_key));
|
||||
} else if (OB_FAIL(sstable_redo_writer.write_commit_log(false,
|
||||
table_key,
|
||||
arg_.start_scn_,
|
||||
direct_load_mgr_handle,
|
||||
tablet_handle,
|
||||
commit_scn,
|
||||
is_remote_write,
|
||||
lock_tid))) {
|
||||
if (OB_FAIL(sstable_redo_writer.write_commit_log(tablet_handle,
|
||||
ddl_kv_mgr_handle,
|
||||
false,
|
||||
table_key,
|
||||
commit_scn,
|
||||
is_remote_write))) {
|
||||
LOG_WARN("fail to remote write commit log", K(ret), K(table_key), K_(arg));
|
||||
} else if (OB_FAIL(data_tablet_mgr->commit(*tablet_handle.get_obj(),
|
||||
arg_.start_scn_,
|
||||
commit_scn,
|
||||
arg_.table_id_,
|
||||
arg_.ddl_task_id_,
|
||||
false/*is replay*/))) {
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->ddl_commit(*tablet_handle.get_obj(), arg_.start_scn_, commit_scn))) {
|
||||
LOG_WARN("failed to do ddl kv commit", K(ret), K(arg_));
|
||||
} else {
|
||||
result_ = commit_scn.get_val_for_tx();
|
||||
}
|
||||
if (lock_tid != 0) {
|
||||
data_tablet_mgr->unlock(lock_tid);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -2613,10 +2587,8 @@ int ObRpcStartTransferTaskP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObTransferService *transfer_service = nullptr;
|
||||
const share::ObLSID &src_ls = arg_.get_src_ls();
|
||||
const uint64_t tenant_id = arg_.get_tenant_id();
|
||||
bool is_leader = false;
|
||||
if (OB_UNLIKELY(tenant_id != MTL_ID())) {
|
||||
|
||||
if (OB_UNLIKELY(arg_.get_tenant_id() != MTL_ID())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_ERROR("ObRpcStartTransferTaskP::process tenant not match", KR(ret), K_(arg));
|
||||
} else if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
@ -2625,11 +2597,6 @@ int ObRpcStartTransferTaskP::process()
|
||||
} else if (OB_ISNULL(transfer_service = MTL(ObTransferService *))) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("ls service should not be null", K(ret), KP(transfer_service));
|
||||
} else if (OB_FAIL(storage::ObStorageHAUtils::check_ls_is_leader(tenant_id, src_ls, is_leader))) {
|
||||
LOG_WARN("fail to check ls is leader", K(ret), K(tenant_id), K(src_ls));
|
||||
} else if (!is_leader) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_WARN("ls is not leader, please retry", K(ret), K(is_leader));
|
||||
} else {
|
||||
transfer_service->wakeup();
|
||||
}
|
||||
@ -2877,6 +2844,7 @@ int ObTenantTTLP::process()
|
||||
RS_LOG(WARN, "fail to launch ttl", KR(ret), K(req));
|
||||
}
|
||||
res.err_code_ = ret;
|
||||
ret = OB_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2892,258 +2860,6 @@ int ObAdminUnlockMemberListP::process()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcNotifyTenantSnapshotSchedulerP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (!arg_.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_));
|
||||
} else {
|
||||
MTL_SWITCH(gen_meta_tenant_id(arg_.get_tenant_id())) {
|
||||
rootserver::ObTenantSnapshotScheduler* tenant_snapshot_scheduler = MTL(rootserver::ObTenantSnapshotScheduler*);
|
||||
if (OB_ISNULL(tenant_snapshot_scheduler)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("tenant snapshot scheduler is null", KR(ret), K(arg_));
|
||||
} else {
|
||||
tenant_snapshot_scheduler->wakeup();
|
||||
}
|
||||
}
|
||||
}
|
||||
(void)result_.init(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcFlushLSArchiveP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t tenant_id = MTL_ID();
|
||||
archive::ObArchiveService* archive_svr = MTL(archive::ObArchiveService*);
|
||||
|
||||
if (!arg_.is_valid() || tenant_id != arg_.tenant_id_) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_), K(tenant_id));
|
||||
} else if (OB_ISNULL(archive_svr)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("archive service is null", KR(ret), K(arg_));
|
||||
} else {
|
||||
archive_svr->flush_all();
|
||||
}
|
||||
result_ = ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcNotifyCloneSchedulerP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_));
|
||||
} else {
|
||||
MTL_SWITCH(arg_.get_tenant_id()) {
|
||||
rootserver::ObCloneScheduler* clone_scheduler = MTL(rootserver::ObCloneScheduler*);
|
||||
if (OB_ISNULL(clone_scheduler)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("clone scheduler is null", KR(ret), K(arg_));
|
||||
} else {
|
||||
clone_scheduler->wakeup();
|
||||
}
|
||||
}
|
||||
}
|
||||
(void)result_.init(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObRpcNotifyTenantThreadP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
LOG_INFO("receive notify tenant thread", K(arg_));
|
||||
if (OB_UNLIKELY(!arg_.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(arg_));
|
||||
} else {
|
||||
MTL_SWITCH(arg_.get_tenant_id()) {
|
||||
if (obrpc::ObNotifyTenantThreadArg::RECOVERY_LS_SERVICE == arg_.get_thread_type()) {
|
||||
rootserver::ObRecoveryLSService *ls_service =
|
||||
MTL(rootserver::ObRecoveryLSService *);
|
||||
if (OB_ISNULL(ls_service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("ls service is null", KR(ret), K(arg_));
|
||||
} else {
|
||||
ls_service->wakeup();
|
||||
}
|
||||
} else {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpected thread type", KR(ret), K(arg_));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ObKillClientSessionP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObSQLSessionInfo *session = NULL;
|
||||
uint32_t server_sess_id = INVALID_SESSID;
|
||||
if (OB_ISNULL(gctx_.session_mgr_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(WARN, "session_mgr_ is null", KR(ret));
|
||||
} else if (OB_FAIL(gctx_.session_mgr_->get_client_sess_map().get_refactored(
|
||||
arg_.get_client_sess_id(), server_sess_id))) {
|
||||
if (ret == OB_HASH_NOT_EXIST) {
|
||||
// no need to display info, if current server no this proxy session id.
|
||||
ret = OB_SUCCESS;
|
||||
LOG_DEBUG("current client session id not find", K(ret), K(arg_.get_client_sess_id()));
|
||||
} else {
|
||||
COMMON_LOG(WARN, "get session failed", KR(ret), K(arg_));
|
||||
}
|
||||
} else if (OB_FAIL(gctx_.session_mgr_->get_session(server_sess_id, session))) {
|
||||
LOG_INFO("fail to get session", K(ret), K(server_sess_id));
|
||||
ret = OB_SUCCESS;
|
||||
} else if (OB_ISNULL(session)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("session info is NULL", K(ret), K(arg_.get_client_sess_id()));
|
||||
} else {
|
||||
session->set_mark_killed(true);
|
||||
// Ensure smooth exit of executed requests.
|
||||
session->set_session_state(SESSION_KILLED);
|
||||
}
|
||||
if (NULL != session) {
|
||||
gctx_.session_mgr_->revert_session(session);
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
// record kill_client_sess_map.
|
||||
int flag = 1;
|
||||
gctx_.session_mgr_->get_kill_client_sess_map().set_refactored(arg_.get_client_sess_id(),
|
||||
arg_.get_create_time(), flag);
|
||||
result_.set_can_kill_client_sess(true);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObClientSessionConnectTimeP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObSQLSessionInfo *session = NULL;
|
||||
ObString str_result;
|
||||
uint32_t server_sess_id = INVALID_SESSID;
|
||||
if (OB_ISNULL(gctx_.session_mgr_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
COMMON_LOG(WARN, "session_mgr_ is null", KR(ret));
|
||||
} else if (OB_FAIL(gctx_.session_mgr_->get_client_sess_map().get_refactored(
|
||||
arg_.get_client_sess_id(), server_sess_id))) {
|
||||
COMMON_LOG(WARN, "get session failed", KR(ret), K(arg_));
|
||||
} else if (OB_FAIL(gctx_.session_mgr_->get_session(server_sess_id, session))) {
|
||||
LOG_WARN("fail to get session", K(ret), K(server_sess_id));
|
||||
} else if (OB_ISNULL(session)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("session info is NULL", K(ret), K(arg_.get_client_sess_id()));
|
||||
} else {
|
||||
result_.set_client_create_time(session->get_client_create_time());
|
||||
if (((OB_SYS_TENANT_ID == arg_.get_tenant_id())
|
||||
|| ((arg_.get_tenant_id() == session->get_priv_tenant_id())
|
||||
&& (arg_.is_has_user_super_privilege() ||
|
||||
arg_.get_user_id() == session->get_user_id())))) {
|
||||
result_.set_have_kill_auth(true);
|
||||
} else {
|
||||
result_.set_have_kill_auth(false);
|
||||
}
|
||||
LOG_DEBUG("get connect time rpc", K(session->get_client_create_time()),
|
||||
K(session->get_sessid()), K(session->get_client_sessid()));
|
||||
}
|
||||
if (NULL != session) {
|
||||
gctx_.session_mgr_->revert_session(session);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTabletLocationReceiveP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_ISNULL(GCTX.location_service_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("GCTX.location_service_ is nullptr", KR(ret), KP(GCTX.location_service_));
|
||||
} else {
|
||||
FOREACH_CNT_X(it, arg_.get_tasks(), OB_SUCC(ret)) {
|
||||
if (OB_FAIL(GCTX.location_service_->submit_tablet_update_task(*it))) {
|
||||
LOG_WARN("failed to submit_tablet_update_tasks", KR(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
result_.set_ret(ret);
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
|
||||
int ObCancelGatherStatsP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (!arg_.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid arg", K(arg_), K(ret));
|
||||
} else if (OB_FAIL(ObOptStatGatherStatList::instance().cancel_gather_stats(arg_.tenant_id_,
|
||||
arg_.task_id_))) {
|
||||
LOG_WARN("failed to cancel gather stats", K(ret));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObForceSetTenantLogDiskP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (!arg_.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid arg", K(ret));
|
||||
} else if (OB_FAIL(GCTX.log_block_mgr_->force_update_tenant_log_disk(arg_.tenant_id_, arg_.log_disk_size_))) {
|
||||
LOG_WARN("force_update_sys_tenant_log_disk failed", K(ret), "tenant_id", arg_.tenant_id_, "new_log_disk", arg_.log_disk_size_);
|
||||
} else {
|
||||
LOG_WARN("force_update_sys_tenant_log_disk success", K(ret), "tenant_id", arg_.tenant_id_, "new_log_disk", arg_.log_disk_size_);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
class ObDumpUnitInfoFunctor {
|
||||
public:
|
||||
ObDumpUnitInfoFunctor(ObSArray<ObDumpServerUsageResult::ObUnitInfo> &result) : result_(result) {}
|
||||
int operator()()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObDumpServerUsageResult::ObUnitInfo info;
|
||||
info.tenant_id_ = MTL_ID();
|
||||
logservice::ObLogService *log_service = MTL(logservice::ObLogService*);
|
||||
int64_t log_disk_size = 0, log_disk_in_use = 0;
|
||||
if (OB_ISNULL(log_service)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("log_service is nullptr", KP(log_service));
|
||||
} else if (OB_FAIL(log_service->get_palf_stable_disk_usage(log_disk_in_use, log_disk_size))) {
|
||||
LOG_WARN("get_palf_stable_disk_usage failed", KP(log_service));
|
||||
} else {
|
||||
info.log_disk_in_use_ = log_disk_in_use;
|
||||
info.log_disk_size_ = log_disk_size;
|
||||
}
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (OB_FAIL(result_.push_back(info))) {
|
||||
LOG_WARN("push_back failed", KR(ret), K(info));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
private:
|
||||
ObSArray<ObDumpServerUsageResult::ObUnitInfo> &result_;
|
||||
};
|
||||
int ObForceDumpServerUsageP::process()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int64_t &log_disk_assigned = result_.server_info_.log_disk_assigned_;
|
||||
int64_t &log_disk_capacity = result_.server_info_.log_disk_capacity_;
|
||||
ObSArray<ObDumpServerUsageResult::ObUnitInfo> &result = result_.unit_info_;
|
||||
ObDumpUnitInfoFunctor dump_unit_info(result);
|
||||
if (OB_FAIL(GCTX.omt_->operate_in_each_tenant(dump_unit_info))) {
|
||||
CLOG_LOG(WARN, "operate_in_each_tenant failed", KR(ret));
|
||||
} else if (OB_FAIL(GCTX.log_block_mgr_->get_disk_usage(log_disk_assigned, log_disk_capacity))) {
|
||||
CLOG_LOG(WARN, "get_disk_usage failed", KR(ret));
|
||||
} else {}
|
||||
return ret;
|
||||
}
|
||||
} // end of namespace observer
|
||||
} // end of namespace oceanbase
|
||||
|
||||
Reference in New Issue
Block a user