split memory of array in detect callback from 500 tenant
This commit is contained in:
@ -60,8 +60,8 @@ int ObMockResource::free_cnt = 0;
|
||||
class ObMockDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObMockDetectCB(const ObArray<ObPeerTaskState> &peer_states, ObMockResource *resource)
|
||||
: ObIDetectCallback(peer_states), resouce_(resource) {}
|
||||
ObMockDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, ObMockResource *resource)
|
||||
: ObIDetectCallback(tenant_id, peer_states), resouce_(resource) {}
|
||||
int do_callback() override
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -21,10 +21,11 @@ namespace common {
|
||||
|
||||
const int64_t DM_INTERRUPT_MSG_MAX_LENGTH = 128;
|
||||
|
||||
ObIDetectCallback::ObIDetectCallback(const ObArray<ObPeerTaskState> &peer_states)
|
||||
ObIDetectCallback::ObIDetectCallback(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states)
|
||||
: ref_count_(0)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
peer_states_.set_attr(ObMemAttr(tenant_id, "DmCbStArr"));
|
||||
if (OB_FAIL(peer_states_.assign(peer_states))) {
|
||||
alloc_succ_ = false;
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
@ -157,13 +158,16 @@ int ObDmInterruptQcCall::mock_sqc_finish_msg(sql::ObPxSqcMeta &sqc)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ObQcDetectCB::ObQcDetectCB(const ObArray<ObPeerTaskState> &peer_states, const ObInterruptibleTaskID &tid, sql::ObDfo &dfo,
|
||||
ObQcDetectCB::ObQcDetectCB(uint64_t tenant_id,
|
||||
const ObArray<ObPeerTaskState> &peer_states,
|
||||
const ObInterruptibleTaskID &tid, sql::ObDfo &dfo,
|
||||
const ObArray<sql::dtl::ObDtlChannel *> &dtl_channels)
|
||||
: ObIDetectCallback(peer_states), tid_(tid), dfo_(dfo)
|
||||
: ObIDetectCallback(tenant_id, peer_states), tid_(tid), dfo_(dfo)
|
||||
{
|
||||
// if ObIDetectCallback constructed succ
|
||||
if (alloc_succ_) {
|
||||
int ret = OB_SUCCESS;
|
||||
dtl_channels_.set_attr(ObMemAttr(tenant_id, "DmCbDtlArr"));
|
||||
if (OB_FAIL(dtl_channels_.assign(dtl_channels))) {
|
||||
alloc_succ_ = false;
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
|
||||
@ -70,7 +70,7 @@ class ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
// constructor for pass peer_states from derived class
|
||||
explicit ObIDetectCallback(const ObArray<ObPeerTaskState> &peer_states);
|
||||
explicit ObIDetectCallback(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states);
|
||||
virtual void destroy()
|
||||
{
|
||||
peer_states_.reset();
|
||||
@ -106,7 +106,7 @@ protected:
|
||||
class ObQcDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObQcDetectCB(const ObArray<ObPeerTaskState> &peer_states, const ObInterruptibleTaskID &tid, sql::ObDfo &dfo,
|
||||
ObQcDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, const ObInterruptibleTaskID &tid, sql::ObDfo &dfo,
|
||||
const ObArray<sql::dtl::ObDtlChannel *> &dtl_channels);
|
||||
void destroy() override;
|
||||
int do_callback() override;
|
||||
@ -124,8 +124,8 @@ private:
|
||||
class ObSqcDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObSqcDetectCB(const ObArray<ObPeerTaskState> &peer_states, const ObInterruptibleTaskID &tid)
|
||||
: ObIDetectCallback(peer_states), tid_(tid) {}
|
||||
ObSqcDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, const ObInterruptibleTaskID &tid)
|
||||
: ObIDetectCallback(tenant_id, peer_states), tid_(tid) {}
|
||||
|
||||
int do_callback() override;
|
||||
int64_t get_detect_callback_type() const override { return (int64_t)DetectCallBackType::SQC_DETECT_CB; }
|
||||
@ -136,8 +136,8 @@ private:
|
||||
class ObSingleDfoDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObSingleDfoDetectCB(const ObArray<ObPeerTaskState> &peer_states, const sql::dtl::ObDTLIntermResultKey &key)
|
||||
: ObIDetectCallback(peer_states), key_(key) {}
|
||||
ObSingleDfoDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, const sql::dtl::ObDTLIntermResultKey &key)
|
||||
: ObIDetectCallback(tenant_id, peer_states), key_(key) {}
|
||||
|
||||
int do_callback() override;
|
||||
int64_t get_detect_callback_type() const override { return (int64_t)DetectCallBackType::SINGLE_DFO_DETECT_CB; }
|
||||
@ -148,8 +148,8 @@ private:
|
||||
class ObTempTableDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObTempTableDetectCB(const ObArray<ObPeerTaskState> &peer_states, const sql::dtl::ObDTLIntermResultKey &key)
|
||||
: ObIDetectCallback(peer_states), key_(key) {}
|
||||
ObTempTableDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, const sql::dtl::ObDTLIntermResultKey &key)
|
||||
: ObIDetectCallback(tenant_id, peer_states), key_(key) {}
|
||||
|
||||
int do_callback() override;
|
||||
int64_t get_detect_callback_type() const override { return (int64_t)DetectCallBackType::TEMP_TABLE_DETECT_CB; }
|
||||
@ -160,8 +160,8 @@ private:
|
||||
class ObP2PDataHubDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObP2PDataHubDetectCB(const ObArray<ObPeerTaskState> &peer_states, const sql::ObP2PDhKey &key)
|
||||
: ObIDetectCallback(peer_states), key_(key) {}
|
||||
ObP2PDataHubDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, const sql::ObP2PDhKey &key)
|
||||
: ObIDetectCallback(tenant_id, peer_states), key_(key) {}
|
||||
|
||||
int do_callback() override;
|
||||
int64_t get_detect_callback_type() const override { return (int64_t)DetectCallBackType::P2P_DATAHUB_DETECT_CB; }
|
||||
|
||||
@ -182,7 +182,7 @@ public:
|
||||
ObIAllocator &allocator = get_mem_context()->get_malloc_allocator();
|
||||
void *buf = allocator.alloc(sizeof(T));
|
||||
if (OB_NOT_NULL(buf)) {
|
||||
ptr = new(buf) T(args...);
|
||||
ptr = new(buf) T(detectable_id.tenant_id_, args...);
|
||||
if (!ptr->alloc_succ()) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LIB_LOG(WARN, "[DM] failed to new cb ", K(ptr));
|
||||
|
||||
@ -96,8 +96,8 @@ int ObMockResource::free_cnt = 0;
|
||||
class ObMockDetectCB : public ObIDetectCallback
|
||||
{
|
||||
public:
|
||||
ObMockDetectCB(const ObArray<ObPeerTaskState> &peer_states, ObMockResource *resource)
|
||||
: ObIDetectCallback(peer_states), resouce_(resource) {}
|
||||
ObMockDetectCB(uint64_t tenant_id, const ObArray<ObPeerTaskState> &peer_states, ObMockResource *resource)
|
||||
: ObIDetectCallback(tenant_id, peer_states), resouce_(resource) {}
|
||||
int do_callback() override
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
Reference in New Issue
Block a user