diff --git a/src/logservice/logrpc/ob_log_request_handler.cpp b/src/logservice/logrpc/ob_log_request_handler.cpp index 436584745..0284d42f1 100755 --- a/src/logservice/logrpc/ob_log_request_handler.cpp +++ b/src/logservice/logrpc/ob_log_request_handler.cpp @@ -480,18 +480,27 @@ int LogRequestHandler::handle_sync_request( return ret; } +#ifdef OB_BUILD_SHARED_STORAGE template <> int LogRequestHandler::handle_request(const LogSyncBaseLSNReq &req) { int ret = common::OB_SUCCESS; if (OB_UNLIKELY(!req.is_valid())) { ret = OB_INVALID_ARGUMENT; - PALF_LOG(ERROR, "Invalid argument!!!", K(req)); + CLOG_LOG(ERROR, "Invalid argument!!!", K(req)); + } else if (!GCTX.is_shared_storage_mode()) { + ret = OB_ERR_UNEXPECTED; + CLOG_LOG(ERROR, "unexcepted error, mustn't use this interface in non-shared storage mode, ", K(req)); } else { + LSN end_lsn; + LSN base_lsn; palf::PalfHandleGuard palf_handle_guard; if (OB_FAIL(get_palf_handle_guard_(req.ls_id_.id(), palf_handle_guard))) { CLOG_LOG(WARN, "get_palf_handle_guard_ failed", K(req)); - } else if (OB_FAIL(palf_handle_guard.advance_base_lsn(req.base_lsn_))) { + } else if (OB_FAIL(palf_handle_guard.get_end_lsn(end_lsn))) { + CLOG_LOG(WARN, "get_end_lsnf failed", KR(ret), K(req)); + } else if (FALSE_IT(base_lsn = MIN(end_lsn, req.base_lsn_))) { + } else if (OB_FAIL(palf_handle_guard.advance_base_lsn(base_lsn))) { PALF_LOG(WARN, "PalfHandleImpl update_base_lsn failed", K(req)); } else { PALF_LOG(TRACE, "handle sync_base_lsn success", K(req)); @@ -500,7 +509,6 @@ int LogRequestHandler::handle_request(const LogSyncBaseLSNReq return ret; } -#ifdef OB_BUILD_SHARED_STORAGE template <> int LogRequestHandler::handle_request(const LogAcquireRebuildInfoMsg &req) { diff --git a/src/logservice/logrpc/ob_log_rpc_processor.h b/src/logservice/logrpc/ob_log_rpc_processor.h index fcd2fe285..31aa2c3f9 100644 --- a/src/logservice/logrpc/ob_log_rpc_processor.h +++ b/src/logservice/logrpc/ob_log_rpc_processor.h @@ -134,11 +134,11 @@ DEFINE_LOGSERVICE_SYNC_RPC_PROCESSOR(LogGetCkptReqP, LogGetCkptResp, obrpc::OB_LOG_GET_LS_CKPT); +#ifdef OB_BUILD_SHARED_STORAGE DEFINE_LOGSERVICE_RPC_PROCESSOR(LogSyncBaseLSNReqP, obrpc::ObLogServiceRpcProxy, LogSyncBaseLSNReq, obrpc::OB_LOG_SYNC_BASE_LSN_REQ); -#ifdef OB_BUILD_SHARED_STORAGE DEFINE_LOGSERVICE_RPC_PROCESSOR(LogAcquireRebuildInfoP, obrpc::ObLogServiceRpcProxy, LogAcquireRebuildInfoMsg, diff --git a/src/observer/ob_srv_xlator_primary.cpp b/src/observer/ob_srv_xlator_primary.cpp index 53f11e666..5093b440f 100644 --- a/src/observer/ob_srv_xlator_primary.cpp +++ b/src/observer/ob_srv_xlator_primary.cpp @@ -207,8 +207,8 @@ void oceanbase::observer::init_srv_xlator_for_logservice(ObSrvRpcXlator *xlator) RPC_PROCESSOR(logservice::LogProbeRsP); #endif RPC_PROCESSOR(logservice::LogGetCkptReqP); - RPC_PROCESSOR(logservice::LogSyncBaseLSNReqP); #ifdef OB_BUILD_SHARED_STORAGE + RPC_PROCESSOR(logservice::LogSyncBaseLSNReqP); RPC_PROCESSOR(logservice::LogAcquireRebuildInfoP); #endif }