[FEAT MERGE] merge transfer
Co-authored-by: wxhwang <wxhwang@126.com> Co-authored-by: godyangfight <godyangfight@gmail.com> Co-authored-by: Tyshawn <tuyunshan@gmail.com>
This commit is contained in:
@ -18,6 +18,7 @@
|
||||
#define private public
|
||||
#include "share/scheduler/ob_dag_scheduler.h"
|
||||
#include "lib/atomic/ob_atomic.h"
|
||||
#include "lib/alloc/ob_malloc_allocator.h"
|
||||
#include "observer/omt/ob_tenant_node_balancer.h"
|
||||
#include "share/scheduler/ob_dag_warning_history_mgr.h"
|
||||
#include "storage/meta_mem/ob_tenant_meta_mem_mgr.h"
|
||||
@ -49,6 +50,7 @@ namespace oceanbase
|
||||
using namespace common;
|
||||
using namespace share;
|
||||
using namespace omt;
|
||||
using namespace lib;
|
||||
|
||||
namespace storage
|
||||
{
|
||||
@ -67,6 +69,7 @@ public:
|
||||
TestDagScheduler()
|
||||
: tenant_id_(500),
|
||||
scheduler_(nullptr),
|
||||
dag_history_mgr_(nullptr),
|
||||
tenant_base_(500)
|
||||
{}
|
||||
~TestDagScheduler() {}
|
||||
@ -84,9 +87,16 @@ public:
|
||||
scheduler_ = OB_NEW(ObTenantDagScheduler, ObModIds::TEST);
|
||||
tenant_base_.set(scheduler_);
|
||||
|
||||
dag_history_mgr_ = OB_NEW(ObDagWarningHistoryManager, ObModIds::TEST);
|
||||
tenant_base_.set(dag_history_mgr_);
|
||||
|
||||
ObTenantEnv::set_tenant(&tenant_base_);
|
||||
ASSERT_EQ(OB_SUCCESS, tenant_base_.init());
|
||||
|
||||
ObMallocAllocator *ma = ObMallocAllocator::get_instance();
|
||||
ASSERT_EQ(OB_SUCCESS, ma->create_and_add_tenant_allocator(tenant_id_));
|
||||
ASSERT_EQ(OB_SUCCESS, ma->set_tenant_limit(tenant_id_, 1LL << 30));
|
||||
|
||||
ASSERT_EQ(OB_SUCCESS, t3m->init());
|
||||
ASSERT_EQ(OB_SUCCESS, scheduler_->init(tenant_id_, time_slice, check_waiting_list_period, MAX_DAG_CNT));
|
||||
}
|
||||
@ -94,6 +104,8 @@ public:
|
||||
{
|
||||
scheduler_->destroy();
|
||||
scheduler_ = nullptr;
|
||||
dag_history_mgr_->~ObDagWarningHistoryManager();
|
||||
dag_history_mgr_ = nullptr;
|
||||
tenant_base_.destroy();
|
||||
ObTenantEnv::set_tenant(nullptr);
|
||||
}
|
||||
@ -101,6 +113,7 @@ private:
|
||||
const static int64_t MAX_DAG_CNT = 64;
|
||||
const uint64_t tenant_id_;
|
||||
ObTenantDagScheduler *scheduler_;
|
||||
ObDagWarningHistoryManager *dag_history_mgr_;
|
||||
ObTenantBase tenant_base_;
|
||||
DISALLOW_COPY_AND_ASSIGN(TestDagScheduler);
|
||||
};
|
||||
@ -131,7 +144,17 @@ public:
|
||||
}
|
||||
return bret;
|
||||
}
|
||||
virtual int fill_comment(char *buf,const int64_t size) const override { UNUSEDx(buf, size); return OB_SUCCESS; }
|
||||
virtual int fill_info_param(compaction::ObIBasicInfoParam *&out_param,
|
||||
ObIAllocator &allocator) const override
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
} else if (OB_FAIL(ADD_DAG_WARN_INFO_PARAM(out_param, allocator, get_type(), id_, id_+1, "is_test", true))) {
|
||||
COMMON_LOG(WARN, "fail to add dag warning info param", K(ret));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
virtual int fill_dag_key(char *buf,const int64_t size) const override { UNUSEDx(buf, size); return OB_SUCCESS; }
|
||||
virtual lib::Worker::CompatMode get_compat_mode() const override
|
||||
{ return lib::Worker::CompatMode::MYSQL; }
|
||||
@ -193,7 +216,6 @@ public:
|
||||
}
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
|
||||
bool check_can_retry()
|
||||
{
|
||||
bool bret = true;
|
||||
@ -229,13 +251,16 @@ TEST_F(TestDagScheduler, test_task_wait_to_schedule)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObWaitDag *dag = NULL;
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag(nullptr, dag));
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag<ObWaitDag>(nullptr));
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
/*
|
||||
@ -313,14 +338,16 @@ TEST_F(TestDagScheduler, test_task_retry)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
ObTaskRetryDag *dag = NULL;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag(nullptr, dag));
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag<ObTaskRetryDag>(nullptr));
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObDagRetryTask : public ObITask
|
||||
@ -432,6 +459,9 @@ TEST_F(TestDagScheduler, test_dag_retry)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
int ret = OB_SUCCESS;
|
||||
for (int i = 0; OB_SUCC(ret) && i < 5; ++i) {
|
||||
@ -442,16 +472,17 @@ TEST_F(TestDagScheduler, test_dag_retry)
|
||||
param.id_ = i + 1;
|
||||
snprintf(str, str_len, "Hello OceanBase_%d", i);
|
||||
param.str_ = ObString(str);
|
||||
if (OB_FAIL(scheduler->create_and_add_dag(¶m, dag))) {
|
||||
COMMON_LOG(WARN, "failed to create first task", K(ret));
|
||||
} else {
|
||||
dag->set_max_retry_times(3);
|
||||
if (OB_FAIL(scheduler->create_dag(¶m, dag))) {
|
||||
COMMON_LOG(WARN, "failed to create dag", K(ret));
|
||||
} else if (FALSE_IT(dag->set_max_retry_times(3))) {
|
||||
} else if (OB_FAIL(scheduler->add_dag(dag))) {
|
||||
COMMON_LOG(WARN, "failed to add dag", K(ret));
|
||||
}
|
||||
EXPECT_EQ(OB_SUCCESS, ret);
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObOperator
|
||||
@ -751,14 +782,16 @@ TEST_F(TestDagScheduler, test_basic_dag_net)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
ObFatherDagNet *dag_net = nullptr;
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObFatherDagNet>(nullptr));
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObFatherWithRetryDagNet : public ObFatherDagNet
|
||||
@ -822,14 +855,16 @@ TEST_F(TestDagScheduler, test_basic_dag_net_with_one_retry_dag)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
ObFatherWithRetryDagNet *dag_net = nullptr;
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObFatherWithRetryDagNet>(nullptr));
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
/*
|
||||
@ -902,15 +937,24 @@ TEST_F(TestDagScheduler, test_generage_task_failed)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
ASSERT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
int ret = OB_SUCCESS;
|
||||
ObGenerateFailedDag *dag = nullptr;
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag(nullptr, dag));
|
||||
dag->set_max_retry_times(7);
|
||||
if (OB_FAIL(scheduler->create_dag(nullptr, dag))) {
|
||||
COMMON_LOG(WARN, "failed to create dag", K(ret));
|
||||
} else if (FALSE_IT(dag->set_max_retry_times(7))) {
|
||||
} else if (OB_FAIL(scheduler->add_dag(dag))) {
|
||||
COMMON_LOG(WARN, "failed to add dag", K(ret));
|
||||
}
|
||||
EXPECT_EQ(OB_SUCCESS, ret);
|
||||
}
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
ASSERT_EQ(1, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
//generate next dag
|
||||
@ -1233,6 +1277,9 @@ TEST_F(TestDagScheduler, generate_next_dag)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
ObStartGenerateNextDag *dag = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->alloc_dag(dag));
|
||||
@ -1241,7 +1288,7 @@ TEST_F(TestDagScheduler, generate_next_dag)
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->add_dag(dag));
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObCreateChildTask : public ObITask
|
||||
@ -1377,11 +1424,14 @@ TEST_F(TestDagScheduler, test_add_dag_failed_in_generate_dag_net)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObCreateDagNet *dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
ASSERT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
ASSERT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObCreateDagNet>(nullptr));
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
ASSERT_EQ(1, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObFreeDagNet: public ObFatherDagNet
|
||||
@ -1426,11 +1476,14 @@ TEST_F(TestDagScheduler, test_free_dag_func)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObFreeDagNet *dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObFreeDagNet>(nullptr));
|
||||
|
||||
wait_scheduler();
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
class ObCancelDag : public ObBasicDag
|
||||
@ -1493,8 +1546,16 @@ TEST_F(TestDagScheduler, test_cancel_dag_func)
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObCancelDagNet *dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
ObDagWarningHistoryManager* manager = MTL(ObDagWarningHistoryManager *);
|
||||
ASSERT_TRUE(nullptr != manager);
|
||||
EXPECT_EQ(OB_SUCCESS, MTL(ObDagWarningHistoryManager *)->init(true, MTL_ID(), "DagWarnHis"));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObCancelDagNet>(nullptr));
|
||||
ObIDagNet *tmp_dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->get_first_dag_net(tmp_dag_net));
|
||||
EXPECT_NE(nullptr, tmp_dag_net);
|
||||
|
||||
ObCancelDagNet *dag_net = static_cast<ObCancelDagNet*>(tmp_dag_net);
|
||||
|
||||
while (scheduler->get_cur_dag_cnt() < 3) {
|
||||
usleep(100);
|
||||
@ -1508,7 +1569,7 @@ TEST_F(TestDagScheduler, test_cancel_dag_func)
|
||||
}
|
||||
|
||||
EXPECT_EQ(true, scheduler->is_empty());
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
|
||||
@ -1518,8 +1579,12 @@ TEST_F(TestDagScheduler, test_cancel_dag_net_func)
|
||||
int ret = OB_SUCCESS;
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
ObCancelDagNet *dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net<ObCancelDagNet>(nullptr));
|
||||
ObIDagNet *tmp_dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->get_first_dag_net(tmp_dag_net));
|
||||
EXPECT_NE(nullptr, tmp_dag_net);
|
||||
|
||||
ObCancelDagNet *dag_net = static_cast<ObCancelDagNet*>(tmp_dag_net);
|
||||
|
||||
while (scheduler->get_cur_dag_cnt() < 3) {
|
||||
usleep(100);
|
||||
@ -1538,24 +1603,24 @@ TEST_F(TestDagScheduler, test_cancel_dag_net_func)
|
||||
ob_usleep(5000 * 1000);
|
||||
|
||||
EXPECT_EQ(true, scheduler->is_empty());
|
||||
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
|
||||
EXPECT_EQ(0, MTL(ObDagWarningHistoryManager *)->size());
|
||||
}
|
||||
|
||||
|
||||
TEST_F(TestDagScheduler, test_destroy_when_running)
|
||||
TEST_F(TestDagScheduler, test_destroy_when_running) //TODO(renju.rj): fix it
|
||||
{
|
||||
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
ASSERT_TRUE(nullptr != scheduler);
|
||||
|
||||
#ifndef BUILD_COVERAGE
|
||||
// not participate in coverage compilation to fix hang problem
|
||||
ObCancelDagNet *dag_net = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
|
||||
|
||||
while (scheduler->get_cur_dag_cnt() < 3) {
|
||||
usleep(100);
|
||||
}
|
||||
#endif
|
||||
// ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
|
||||
// ASSERT_TRUE(nullptr != scheduler);
|
||||
//
|
||||
// #ifndef BUILD_COVERAGE
|
||||
// // not participate in coverage compilation to fix hang problem
|
||||
// ObCancelDagNet *dag_net = nullptr;
|
||||
// EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr));
|
||||
//
|
||||
// while (scheduler->get_cur_dag_cnt() < 3) {
|
||||
// usleep(100);
|
||||
// }
|
||||
// #endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -424,10 +424,14 @@ public:
|
||||
void set_id(int64_t id) { id_ = id; }
|
||||
AtomicOperator &get_op() { return op_; }
|
||||
void set_running() { running_ = true; }
|
||||
int fill_comment(char *buf,const int64_t size) const {
|
||||
virtual int fill_info_param(compaction::ObIBasicInfoParam *&out_param,
|
||||
ObIAllocator &allocator) const override
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_ISNULL(buf) || size <0) {
|
||||
COMMON_LOG(INFO,"buf is NULL",K(ret),K(size));
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
} else if (OB_FAIL(ADD_DAG_WARN_INFO_PARAM(out_param, allocator, get_type(), 1, 1, "table_id", 10))) {
|
||||
COMMON_LOG(WARN, "fail to add dag warning info param", K(ret));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -479,7 +483,7 @@ private:
|
||||
class TestHALowDag : public TestDag
|
||||
{
|
||||
public:
|
||||
TestHALowDag() : TestDag(ObDagType::DAG_TYPE_BACKUP) {}
|
||||
TestHALowDag() : TestDag(ObDagType::DAG_TYPE_BACKUP_PREPARE) {}
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(TestHALowDag);
|
||||
};
|
||||
@ -800,6 +804,7 @@ public:
|
||||
TestDagScheduler()
|
||||
: tenant_id_(500),
|
||||
scheduler_(nullptr),
|
||||
dag_history_mgr_(nullptr),
|
||||
tenant_base_(500),
|
||||
allocator_("DagScheduler")
|
||||
{ }
|
||||
@ -809,18 +814,29 @@ public:
|
||||
scheduler_ = OB_NEW(ObTenantDagScheduler, ObModIds::TEST);
|
||||
tenant_base_.set(scheduler_);
|
||||
|
||||
dag_history_mgr_ = OB_NEW(ObDagWarningHistoryManager, ObModIds::TEST);
|
||||
tenant_base_.set(dag_history_mgr_);
|
||||
|
||||
ObTenantEnv::set_tenant(&tenant_base_);
|
||||
ASSERT_EQ(OB_SUCCESS, tenant_base_.init());
|
||||
|
||||
ObMallocAllocator *ma = ObMallocAllocator::get_instance();
|
||||
ASSERT_EQ(OB_SUCCESS, ma->create_and_add_tenant_allocator(tenant_id_));
|
||||
ASSERT_EQ(OB_SUCCESS, ma->set_tenant_limit(tenant_id_, 1LL << 30));
|
||||
}
|
||||
void TearDown()
|
||||
{
|
||||
scheduler_->destroy();
|
||||
scheduler_ = nullptr;
|
||||
dag_history_mgr_->~ObDagWarningHistoryManager();
|
||||
dag_history_mgr_ = nullptr;
|
||||
tenant_base_.destroy();
|
||||
ObTenantEnv::set_tenant(nullptr);
|
||||
}
|
||||
private:
|
||||
const uint64_t tenant_id_;
|
||||
ObTenantDagScheduler *scheduler_;
|
||||
ObDagWarningHistoryManager *dag_history_mgr_;
|
||||
ObTenantBase tenant_base_;
|
||||
ObArenaAllocator allocator_;
|
||||
DISALLOW_COPY_AND_ASSIGN(TestDagScheduler);
|
||||
|
||||
Reference in New Issue
Block a user