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