826 lines
22 KiB
C++
826 lines
22 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.
|
|
*/
|
|
|
|
#ifndef OCEANBASE_CLOG_OB_LOG_REQ_
|
|
#define OCEANBASE_CLOG_OB_LOG_REQ_
|
|
|
|
#include "ob_log_common.h"
|
|
#include "ob_log_define.h"
|
|
#include "ob_log_type.h"
|
|
#include "common/ob_idc.h"
|
|
#include "share/ob_cascad_member_list.h"
|
|
#include "common/ob_region.h"
|
|
#include "share/rpc/ob_batch_proxy.h"
|
|
#include "storage/transaction/ob_trans_define.h"
|
|
|
|
namespace oceanbase {
|
|
namespace clog {
|
|
enum ObLogReqType {
|
|
OB_INVALID_REQ = 0,
|
|
OB_PUSH_LOG = 1,
|
|
OB_FETCH_LOG = 2,
|
|
OB_ACK_LOG = 3,
|
|
OB_PREPARE_REQ = 4,
|
|
OB_PREPARE_RESP = 5,
|
|
OB_FETCH_LOG_RESP = 6,
|
|
OB_CONFIRMED_INFO_REQ = 7,
|
|
OB_LEADER_SW_INFO_RESP = 8,
|
|
OB_NOTIFY_LOG_MISSING = 9,
|
|
OB_FETCH_REGISTER_SERVER_REQ = 10,
|
|
OB_FETCH_REGISTER_SERVER_RESP = 11,
|
|
OB_REJECT_MSG = 12,
|
|
OB_PARENT_NEXT_ILOG_INFO_RESP = 13,
|
|
OB_BROADCAST_INFO_REQ = 14,
|
|
OB_BATCH_PUSH_LOG = 15,
|
|
OB_BATCH_ACK_LOG = 16,
|
|
OB_LEADER_SW_INFO_RESP_V2 = 17,
|
|
OB_REPLACE_SICK_CHILD_REQ = 18,
|
|
OB_FETCH_LOG_V2 = 19,
|
|
OB_ACK_LOG_V2 = 20,
|
|
OB_PREPARE_RESP_V2 = 21,
|
|
OB_FETCH_REGISTER_SERVER_REQ_V2 = 22,
|
|
OB_KEEPALIVE_MSG = 23,
|
|
OB_LEADER_MAX_LOG_MSG = 24,
|
|
OB_FETCH_REGISTER_SERVER_RESP_V2 = 25,
|
|
OB_REREGISTER_MSG = 26,
|
|
OB_CHECK_REBUILD_REQ = 27,
|
|
// newly added in 2.1.1, for big trans
|
|
OB_FAKE_ACK_LOG = 30,
|
|
OB_FAKE_PUSH_LOG = 31,
|
|
// used for log archive & restore
|
|
OB_SYNC_LOG_ARCHIVE_PROGRESS = 32,
|
|
OB_RESTORE_LEADER_TAKEOVER_MSG = 33,
|
|
OB_RESTORE_LOG_FINISH_MSG = 34,
|
|
OB_RESTORE_ALIVE_MSG = 35,
|
|
OB_RESTORE_ALIVE_REQ = 36,
|
|
OB_RESTORE_ALIVE_RESP = 37,
|
|
// used for standby cluster
|
|
OB_STANDBY_PREPARE_REQ = 38,
|
|
OB_STANDBY_PREPARE_RESP = 39,
|
|
OB_RENEW_MS_LOG_ACK = 40,
|
|
OB_RENEW_MS_CONFIRMED_INFO_REQ = 41,
|
|
OB_PUSH_RENEW_MS_LOG = 42,
|
|
OB_STANDBY_ACK_LOG = 43,
|
|
OB_STANDBY_QUERY_SYNC_START_ID = 44,
|
|
OB_STANDBY_SYNC_START_ID_RESP = 45,
|
|
OB_RESTORE_CHECK_REQ = 46,
|
|
|
|
OB_QUERY_RESTORE_END_ID_RESP = 50,
|
|
// sentry req
|
|
OB_LOG_MAX_REQ_TYPE_ID = 51,
|
|
};
|
|
|
|
inline bool is_batch_submit_msg(const ObLogReqType type)
|
|
{
|
|
return OB_BATCH_PUSH_LOG == type || OB_BATCH_ACK_LOG == type;
|
|
}
|
|
|
|
struct ObLogReqContext {
|
|
ObLogReqContext()
|
|
: type_(OB_INVALID_REQ),
|
|
server_(),
|
|
pkey_(),
|
|
req_id_(0),
|
|
data_(NULL),
|
|
len_(0),
|
|
cluster_id_(common::OB_INVALID_CLUSTER_ID)
|
|
{}
|
|
~ObLogReqContext()
|
|
{}
|
|
bool is_valid() const
|
|
{
|
|
return server_.is_valid() && pkey_.is_valid() && NULL != data_ && len_ >= 0;
|
|
}
|
|
TO_STRING_KV(
|
|
N_TYPE, type_, N_SERVER, server_, N_PKEY, pkey_, N_REQ_ID, req_id_, N_SIZE, len_, N_CLUSTER_ID, cluster_id_);
|
|
ObLogReqType type_;
|
|
common::ObAddr server_;
|
|
common::ObPartitionKey pkey_;
|
|
int64_t req_id_;
|
|
const char* data_;
|
|
int64_t len_;
|
|
int64_t cluster_id_;
|
|
};
|
|
|
|
class ObINetReq : public obrpc::ObIFill {
|
|
public:
|
|
ObINetReq()
|
|
{}
|
|
virtual ~ObINetReq()
|
|
{}
|
|
virtual int serialize(char* buf, const int64_t buf_len, int64_t& pos) const = 0;
|
|
virtual int deserialize(const char* buf, const int64_t data_len, int64_t& pos) = 0;
|
|
virtual int64_t get_serialize_size(void) const = 0;
|
|
virtual int64_t to_string(char* buf, const int64_t buf_len) const = 0;
|
|
virtual int fill_buffer(char* buf, int64_t size, int64_t& filled_size) const
|
|
{
|
|
filled_size = 0;
|
|
return serialize(buf, size, filled_size);
|
|
}
|
|
virtual int64_t get_req_size() const
|
|
{
|
|
return get_serialize_size();
|
|
}
|
|
};
|
|
|
|
enum ObPushLogMode {
|
|
PUSH_LOG_ASYNC = 0,
|
|
PUSH_LOG_SYNC = 1,
|
|
};
|
|
|
|
struct ObPushLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObPushLogReq(common::ObProposalID proposal_id, const char* buf, int64_t len, int32_t push_mode)
|
|
: proposal_id_(proposal_id), buf_(buf), len_(len), push_mode_(push_mode)
|
|
{}
|
|
ObPushLogReq() : proposal_id_(), buf_(NULL), len_(0), push_mode_(PUSH_LOG_ASYNC)
|
|
{}
|
|
~ObPushLogReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObProposalID proposal_id_;
|
|
const char* buf_;
|
|
int64_t len_;
|
|
int32_t push_mode_;
|
|
};
|
|
|
|
struct ObPushMsLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObPushMsLogReq(common::ObProposalID proposal_id, const char* buf, int64_t len)
|
|
: proposal_id_(proposal_id), buf_(buf), len_(len)
|
|
{}
|
|
ObPushMsLogReq() : buf_(NULL), len_(0)
|
|
{}
|
|
~ObPushMsLogReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObProposalID proposal_id_;
|
|
const char* buf_;
|
|
int64_t len_;
|
|
};
|
|
|
|
struct ObFetchLogReqV2 : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFetchLogReqV2()
|
|
: start_id_(0),
|
|
end_limit_(0),
|
|
fetch_type_(OB_FETCH_LOG_UNKNOWN),
|
|
proposal_id_(),
|
|
replica_type_(common::REPLICA_TYPE_MAX),
|
|
network_limit_(0),
|
|
cluster_id_(common::OB_INVALID_CLUSTER_ID),
|
|
max_confirmed_log_id_(common::OB_INVALID_ID)
|
|
{}
|
|
ObFetchLogReqV2(int64_t start_id, int64_t end_limit, ObFetchLogType fetch_type, common::ObProposalID proposal_id,
|
|
common::ObReplicaType replica_type, int64_t network_limit, uint64_t max_confirmed_log_id)
|
|
: start_id_(start_id),
|
|
end_limit_(end_limit),
|
|
fetch_type_(fetch_type),
|
|
proposal_id_(proposal_id),
|
|
replica_type_(replica_type),
|
|
network_limit_(network_limit),
|
|
cluster_id_(common::OB_INVALID_CLUSTER_ID),
|
|
max_confirmed_log_id_(max_confirmed_log_id)
|
|
{}
|
|
~ObFetchLogReqV2()
|
|
{}
|
|
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t start_id_;
|
|
int64_t end_limit_;
|
|
ObFetchLogType fetch_type_;
|
|
common::ObProposalID proposal_id_;
|
|
common::ObReplicaType replica_type_;
|
|
int64_t network_limit_;
|
|
int64_t cluster_id_;
|
|
uint64_t max_confirmed_log_id_;
|
|
};
|
|
|
|
struct ObAckLogReqV2 : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObAckLogReqV2(uint64_t log_id, common::ObProposalID proposal_id) : log_id_(log_id), proposal_id_(proposal_id)
|
|
{}
|
|
ObAckLogReqV2() : log_id_(0), proposal_id_()
|
|
{}
|
|
~ObAckLogReqV2()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t log_id_;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObStandbyAckLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObStandbyAckLogReq() : log_id_(common::OB_INVALID_ID), proposal_id_()
|
|
{}
|
|
ObStandbyAckLogReq(uint64_t log_id, common::ObProposalID proposal_id) : log_id_(log_id), proposal_id_(proposal_id)
|
|
{}
|
|
~ObStandbyAckLogReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t log_id_;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObStandbyQuerySyncStartIdReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObStandbyQuerySyncStartIdReq() : send_ts_(common::OB_INVALID_TIMESTAMP)
|
|
{}
|
|
explicit ObStandbyQuerySyncStartIdReq(const int64_t timestamp) : send_ts_(timestamp)
|
|
{}
|
|
~ObStandbyQuerySyncStartIdReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t send_ts_;
|
|
};
|
|
|
|
struct ObStandbyQuerySyncStartIdResp : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObStandbyQuerySyncStartIdResp()
|
|
: original_send_ts_(common::OB_INVALID_TIMESTAMP), sync_start_id_(common::OB_INVALID_ID)
|
|
{}
|
|
explicit ObStandbyQuerySyncStartIdResp(const int64_t send_ts, const uint64_t sync_start_id)
|
|
: original_send_ts_(send_ts), sync_start_id_(sync_start_id)
|
|
{}
|
|
~ObStandbyQuerySyncStartIdResp()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t original_send_ts_;
|
|
uint64_t sync_start_id_;
|
|
};
|
|
|
|
struct ObRenewMsLogAckReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRenewMsLogAckReq(uint64_t log_id, int64_t submit_timestamp, common::ObProposalID proposal_id)
|
|
: log_id_(log_id), submit_timestamp_(submit_timestamp), proposal_id_(proposal_id)
|
|
{}
|
|
ObRenewMsLogAckReq() : log_id_(0), submit_timestamp_(common::OB_INVALID_TIMESTAMP), proposal_id_()
|
|
{}
|
|
~ObRenewMsLogAckReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
uint64_t log_id_;
|
|
int64_t submit_timestamp_;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObFakeAckReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFakeAckReq(uint64_t log_id, common::ObProposalID proposal_id) : log_id_(log_id), proposal_id_(proposal_id)
|
|
{}
|
|
ObFakeAckReq() : log_id_(0), proposal_id_()
|
|
{}
|
|
~ObFakeAckReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t log_id_;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObFakePushLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFakePushLogReq(uint64_t log_id, common::ObProposalID proposal_id) : log_id_(log_id), proposal_id_(proposal_id)
|
|
{}
|
|
ObFakePushLogReq() : log_id_(0), proposal_id_()
|
|
{}
|
|
~ObFakePushLogReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t log_id_;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObPrepareReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
explicit ObPrepareReq(common::ObProposalID proposal_id) : proposal_id_(proposal_id)
|
|
{}
|
|
ObPrepareReq() : proposal_id_()
|
|
{}
|
|
~ObPrepareReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObProposalID proposal_id_;
|
|
};
|
|
|
|
struct ObPrepareRespV2 : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObPrepareRespV2(common::ObProposalID proposal_id, int64_t max_log_id, int64_t max_log_ts)
|
|
: proposal_id_(proposal_id), max_log_id_(max_log_id), max_log_ts_(max_log_ts)
|
|
{}
|
|
ObPrepareRespV2() : max_log_id_(0), max_log_ts_(common::OB_INVALID_TIMESTAMP)
|
|
{}
|
|
~ObPrepareRespV2()
|
|
{}
|
|
common::ObProposalID proposal_id_;
|
|
int64_t max_log_id_;
|
|
int64_t max_log_ts_;
|
|
DECLARE_TO_STRING;
|
|
};
|
|
|
|
struct ObStandbyPrepareReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
explicit ObStandbyPrepareReq(common::ObProposalID proposal_id) : ms_proposal_id_(proposal_id)
|
|
{}
|
|
ObStandbyPrepareReq() : ms_proposal_id_()
|
|
{}
|
|
~ObStandbyPrepareReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObProposalID ms_proposal_id_;
|
|
};
|
|
|
|
struct ObStandbyPrepareResp : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
explicit ObStandbyPrepareResp(common::ObProposalID proposal_id, uint64_t ms_log_id, int64_t membership_version)
|
|
: ms_proposal_id_(proposal_id), ms_log_id_(ms_log_id), membership_version_(membership_version)
|
|
{}
|
|
ObStandbyPrepareResp()
|
|
: ms_proposal_id_(),
|
|
ms_log_id_(common::OB_INVALID_ID),
|
|
membership_version_(common::OB_INVALID_TIMESTAMP),
|
|
member_list_()
|
|
{}
|
|
~ObStandbyPrepareResp()
|
|
{}
|
|
int set_member_list(const common::ObMemberList& member_list);
|
|
DECLARE_TO_STRING;
|
|
common::ObProposalID ms_proposal_id_;
|
|
uint64_t ms_log_id_;
|
|
int64_t membership_version_;
|
|
common::ObMemberList member_list_;
|
|
};
|
|
|
|
struct ObConfirmedInfoReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObConfirmedInfoReq(const uint64_t log_id, const ObConfirmedInfo& confirmed_info, const bool batch_committed)
|
|
{
|
|
log_id_ = log_id;
|
|
confirmed_info_.deep_copy(confirmed_info);
|
|
batch_committed_ = batch_committed;
|
|
}
|
|
ObConfirmedInfoReq() : log_id_(0), confirmed_info_(), batch_committed_(false)
|
|
{}
|
|
~ObConfirmedInfoReq()
|
|
{}
|
|
uint64_t log_id_;
|
|
ObConfirmedInfo confirmed_info_;
|
|
bool batch_committed_;
|
|
TO_STRING_KV(K_(log_id), K_(confirmed_info), K_(batch_committed));
|
|
};
|
|
|
|
struct ObRenewMsLogConfirmedInfoReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRenewMsLogConfirmedInfoReq(
|
|
const uint64_t log_id, const common::ObProposalID& ms_proposal_id, const ObConfirmedInfo& confirmed_info)
|
|
{
|
|
log_id_ = log_id;
|
|
ms_proposal_id_ = ms_proposal_id;
|
|
confirmed_info_.deep_copy(confirmed_info);
|
|
}
|
|
ObRenewMsLogConfirmedInfoReq() : log_id_(0), ms_proposal_id_(), confirmed_info_()
|
|
{}
|
|
~ObRenewMsLogConfirmedInfoReq()
|
|
{}
|
|
uint64_t log_id_;
|
|
common::ObProposalID ms_proposal_id_;
|
|
ObConfirmedInfo confirmed_info_;
|
|
TO_STRING_KV(K_(log_id), K_(ms_proposal_id), K_(confirmed_info));
|
|
};
|
|
|
|
struct ObLogKeepaliveMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObLogKeepaliveMsg(const uint64_t next_log_id, const int64_t next_log_ts_lb, const uint64_t deliver_cnt)
|
|
: next_log_id_(next_log_id), next_log_ts_lb_(next_log_ts_lb), deliver_cnt_(deliver_cnt)
|
|
{}
|
|
ObLogKeepaliveMsg() : next_log_id_(0), next_log_ts_lb_(0), deliver_cnt_(0)
|
|
{}
|
|
~ObLogKeepaliveMsg()
|
|
{}
|
|
uint64_t next_log_id_;
|
|
int64_t next_log_ts_lb_;
|
|
uint64_t deliver_cnt_;
|
|
TO_STRING_KV(K_(next_log_id), K_(next_log_ts_lb), K_(deliver_cnt));
|
|
};
|
|
|
|
struct ObRestoreAliveMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreAliveMsg(const uint64_t start_log_id) : start_log_id_(start_log_id)
|
|
{}
|
|
ObRestoreAliveMsg() : start_log_id_(0)
|
|
{}
|
|
~ObRestoreAliveMsg()
|
|
{}
|
|
void reset();
|
|
TO_STRING_KV(K_(start_log_id));
|
|
uint64_t start_log_id_;
|
|
};
|
|
|
|
struct ObRestoreAliveReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreAliveReq(const int64_t send_ts) : send_ts_(send_ts)
|
|
{}
|
|
ObRestoreAliveReq() : send_ts_(0)
|
|
{}
|
|
~ObRestoreAliveReq()
|
|
{}
|
|
void reset();
|
|
TO_STRING_KV(K_(send_ts));
|
|
int64_t send_ts_;
|
|
};
|
|
|
|
struct ObRestoreAliveResp : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreAliveResp(const int64_t send_ts) : send_ts_(send_ts)
|
|
{}
|
|
ObRestoreAliveResp() : send_ts_(0)
|
|
{}
|
|
~ObRestoreAliveResp()
|
|
{}
|
|
void reset();
|
|
TO_STRING_KV(K_(send_ts));
|
|
int64_t send_ts_;
|
|
};
|
|
|
|
struct ObRestoreTakeoverMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreTakeoverMsg() : send_ts_(common::OB_INVALID_TIMESTAMP)
|
|
{}
|
|
ObRestoreTakeoverMsg(const int64_t send_ts) : send_ts_(send_ts)
|
|
{}
|
|
~ObRestoreTakeoverMsg()
|
|
{}
|
|
TO_STRING_KV(K_(send_ts));
|
|
int64_t send_ts_;
|
|
};
|
|
|
|
enum ObLogMissingMsgType {
|
|
OB_INVALID_MSG_TYPE = 0,
|
|
OB_REBUILD_MSG = 1,
|
|
OB_STANDBY_RESTORE_MSG = 2,
|
|
};
|
|
|
|
struct ObNotifyLogMissingReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObNotifyLogMissingReq(const uint64_t start_log_id, const bool is_in_member_list, const int32_t msg_type)
|
|
: start_log_id_(start_log_id), is_in_member_list_(is_in_member_list), msg_type_(msg_type)
|
|
{}
|
|
ObNotifyLogMissingReq() : start_log_id_(0), is_in_member_list_(false), msg_type_(OB_REBUILD_MSG)
|
|
{}
|
|
~ObNotifyLogMissingReq()
|
|
{}
|
|
uint64_t start_log_id_;
|
|
bool is_in_member_list_;
|
|
int32_t msg_type_;
|
|
TO_STRING_KV(K_(start_log_id), K_(is_in_member_list), K_(msg_type));
|
|
};
|
|
|
|
struct ObFetchRegisterServerRespV2 : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFetchRegisterServerRespV2() : is_assign_parent_succeed_(false), candidate_list_(), msg_type_(0)
|
|
{}
|
|
explicit ObFetchRegisterServerRespV2(bool is_assign_parent_succeed, const int32_t msg_type)
|
|
: is_assign_parent_succeed_(is_assign_parent_succeed), msg_type_(msg_type)
|
|
{}
|
|
~ObFetchRegisterServerRespV2()
|
|
{}
|
|
int set_candidate_list(const share::ObCascadMemberList& candidate_list);
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
bool is_assign_parent_succeed_;
|
|
share::ObCascadMemberList candidate_list_;
|
|
int32_t msg_type_;
|
|
};
|
|
|
|
struct ObFetchRegisterServerReqV2 : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFetchRegisterServerReqV2()
|
|
: replica_type_(common::REPLICA_TYPE_MAX),
|
|
next_replay_log_ts_(common::OB_INVALID_TIMESTAMP),
|
|
is_request_leader_(false),
|
|
is_need_force_register_(false),
|
|
region_(common::DEFAULT_REGION_NAME),
|
|
cluster_id_(common::OB_INVALID_CLUSTER_ID),
|
|
idc_()
|
|
{}
|
|
explicit ObFetchRegisterServerReqV2(common::ObReplicaType replica_type, int64_t next_replay_log_ts,
|
|
bool is_request_leader, bool is_need_force_register, common::ObRegion region, common::ObIDC idc)
|
|
: replica_type_(replica_type),
|
|
next_replay_log_ts_(next_replay_log_ts),
|
|
is_request_leader_(is_request_leader),
|
|
is_need_force_register_(is_need_force_register),
|
|
region_(region),
|
|
cluster_id_(common::OB_INVALID_CLUSTER_ID),
|
|
idc_(idc)
|
|
{}
|
|
explicit ObFetchRegisterServerReqV2(common::ObReplicaType replica_type, int64_t next_replay_log_ts,
|
|
bool is_request_leader, bool is_need_force_register, common::ObRegion region, int64_t cluster_id,
|
|
common::ObIDC idc)
|
|
: replica_type_(replica_type),
|
|
next_replay_log_ts_(next_replay_log_ts),
|
|
is_request_leader_(is_request_leader),
|
|
is_need_force_register_(is_need_force_register),
|
|
region_(region),
|
|
cluster_id_(cluster_id),
|
|
idc_(idc)
|
|
{}
|
|
~ObFetchRegisterServerReqV2()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObReplicaType replica_type_;
|
|
int64_t next_replay_log_ts_;
|
|
bool is_request_leader_;
|
|
bool is_need_force_register_;
|
|
common::ObRegion region_;
|
|
int64_t cluster_id_;
|
|
common::ObIDC idc_;
|
|
};
|
|
|
|
struct ObRejectMsgReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRejectMsgReq() : msg_type_(0), timestamp_(common::OB_INVALID_TIMESTAMP)
|
|
{}
|
|
explicit ObRejectMsgReq(const int32_t msg_type, const int64_t timestamp) : msg_type_(msg_type), timestamp_(timestamp)
|
|
{}
|
|
~ObRejectMsgReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int32_t msg_type_;
|
|
int64_t timestamp_;
|
|
};
|
|
|
|
struct ObRestoreLogFinishMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreLogFinishMsg() : log_id_(common::OB_INVALID_ID)
|
|
{}
|
|
explicit ObRestoreLogFinishMsg(const uint64_t log_id) : log_id_(log_id)
|
|
{}
|
|
~ObRestoreLogFinishMsg()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
uint64_t log_id_;
|
|
};
|
|
|
|
struct ObReregisterMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObReregisterMsg() : send_ts_(common::OB_INVALID_TIMESTAMP), new_leader_()
|
|
{}
|
|
explicit ObReregisterMsg(const int64_t timestamp, const share::ObCascadMember& new_leader)
|
|
: send_ts_(timestamp), new_leader_(new_leader)
|
|
{}
|
|
~ObReregisterMsg()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t send_ts_;
|
|
share::ObCascadMember new_leader_;
|
|
};
|
|
|
|
struct ObBroadcastInfoReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObBroadcastInfoReq(const common::ObReplicaType& replica_type, const uint64_t max_confirmed_log_id)
|
|
: replica_type_(replica_type), max_confirmed_log_id_(max_confirmed_log_id)
|
|
{}
|
|
ObBroadcastInfoReq() : replica_type_(common::REPLICA_TYPE_MAX), max_confirmed_log_id_(0)
|
|
{}
|
|
~ObBroadcastInfoReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObReplicaType replica_type_;
|
|
uint64_t max_confirmed_log_id_;
|
|
};
|
|
|
|
class ObBatchPushLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObBatchPushLogReq()
|
|
{
|
|
reset();
|
|
}
|
|
virtual ~ObBatchPushLogReq()
|
|
{
|
|
reset();
|
|
}
|
|
int init(const transaction::ObTransID& trans_id, const common::ObPartitionArray& partition_array,
|
|
const ObLogInfoArray& log_info_array);
|
|
void reset();
|
|
TO_STRING_KV(K(trans_id_), K(partition_array_), K(log_info_array_));
|
|
|
|
public:
|
|
transaction::ObTransID trans_id_;
|
|
common::ObPartitionArray partition_array_;
|
|
ObLogInfoArray log_info_array_;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(ObBatchPushLogReq);
|
|
};
|
|
|
|
class ObBatchAckLogReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObBatchAckLogReq()
|
|
{
|
|
reset();
|
|
}
|
|
virtual ~ObBatchAckLogReq()
|
|
{
|
|
reset();
|
|
}
|
|
int init(const transaction::ObTransID& trans_id, const ObBatchAckArray& batch_ack_array);
|
|
void reset();
|
|
TO_STRING_KV(K(trans_id_), K(batch_ack_array_));
|
|
|
|
public:
|
|
transaction::ObTransID trans_id_;
|
|
ObBatchAckArray batch_ack_array_;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(ObBatchAckLogReq);
|
|
};
|
|
|
|
struct ObReplaceSickChildReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObReplaceSickChildReq() : sick_child_(), cluster_id_(common::OB_INVALID_CLUSTER_ID)
|
|
{}
|
|
explicit ObReplaceSickChildReq(const common::ObAddr& sick_child)
|
|
: sick_child_(sick_child), cluster_id_(common::OB_INVALID_CLUSTER_ID)
|
|
{}
|
|
explicit ObReplaceSickChildReq(const common::ObAddr& sick_child, const int64_t cluster_id)
|
|
: sick_child_(sick_child), cluster_id_(cluster_id)
|
|
{}
|
|
~ObReplaceSickChildReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
common::ObAddr sick_child_;
|
|
int64_t cluster_id_;
|
|
};
|
|
|
|
struct ObLeaderMaxLogMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObLeaderMaxLogMsg() : switchover_epoch_(-1), leader_max_log_id_(0), leader_next_log_ts_(-1)
|
|
{}
|
|
ObLeaderMaxLogMsg(const int64_t switchover_epoch, const uint64_t leader_max_log_id, const int64_t leader_next_log_ts)
|
|
: switchover_epoch_(switchover_epoch),
|
|
leader_max_log_id_(leader_max_log_id),
|
|
leader_next_log_ts_(leader_next_log_ts)
|
|
{}
|
|
~ObLeaderMaxLogMsg()
|
|
{}
|
|
int64_t switchover_epoch_;
|
|
uint64_t leader_max_log_id_;
|
|
int64_t leader_next_log_ts_;
|
|
TO_STRING_KV(K_(switchover_epoch), K_(leader_max_log_id), K_(leader_next_log_ts));
|
|
};
|
|
|
|
struct ObCheckRebuildReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObCheckRebuildReq() : start_id_(0)
|
|
{}
|
|
|
|
ObCheckRebuildReq(int64_t start_id) : start_id_(start_id)
|
|
{}
|
|
~ObCheckRebuildReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
int64_t start_id_;
|
|
};
|
|
|
|
struct ObSyncLogArchiveProgressMsg : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObSyncLogArchiveProgressMsg(const ObPGLogArchiveStatus& status) : status_(status)
|
|
{}
|
|
ObSyncLogArchiveProgressMsg() : status_()
|
|
{}
|
|
~ObSyncLogArchiveProgressMsg()
|
|
{}
|
|
ObPGLogArchiveStatus status_;
|
|
TO_STRING_KV(K_(status));
|
|
};
|
|
|
|
struct ObRestoreCheckReq : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObRestoreCheckReq() : restore_type_(OB_CHECK_UNKNOWN)
|
|
{}
|
|
explicit ObRestoreCheckReq(const ObRestoreCheckType restore_type) : restore_type_(restore_type)
|
|
{}
|
|
~ObRestoreCheckReq()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
ObRestoreCheckType restore_type_;
|
|
};
|
|
|
|
struct ObQueryRestoreEndIdResp : public ObINetReq {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObQueryRestoreEndIdResp() : last_restore_log_id_(OB_INVALID_ID)
|
|
{}
|
|
explicit ObQueryRestoreEndIdResp(const uint64_t last_restore_log_id) : last_restore_log_id_(last_restore_log_id)
|
|
{}
|
|
~ObQueryRestoreEndIdResp()
|
|
{}
|
|
void reset();
|
|
DECLARE_TO_STRING;
|
|
uint64_t last_restore_log_id_;
|
|
};
|
|
|
|
}; // end namespace clog
|
|
}; // end namespace oceanbase
|
|
|
|
#endif /* OCEANBASE_CLOG_OB_LOG_REQ_H_ */
|