fix distinguish ha dag/dag_net
This commit is contained in:
@ -1666,7 +1666,7 @@ void ObTenantDagScheduler::destroy()
|
||||
}
|
||||
if (dag_net_map_[RUNNING_DAG_NET_MAP].created()) {
|
||||
for (DagNetMap::iterator iter = dag_net_map_[RUNNING_DAG_NET_MAP].begin(); iter != dag_net_map_[RUNNING_DAG_NET_MAP].end(); ++iter) {
|
||||
const bool ha_dag_net = is_ha_dag_net(iter->second->get_type());
|
||||
const bool ha_dag_net = iter->second->is_ha_dag_net();
|
||||
iter->second->~ObIDagNet();
|
||||
if (ha_dag_net) {
|
||||
ha_allocator_.free(iter->second);
|
||||
@ -1733,7 +1733,7 @@ void ObTenantDagScheduler::inner_free_dag(ObIDag &dag)
|
||||
if (OB_UNLIKELY(nullptr != dag.prev_ || nullptr != dag.next_)) {
|
||||
LOG_ERROR_RET(OB_ERR_UNEXPECTED, "dag is in dag_list", K(dag), K(dag.prev_), K(dag.next_));
|
||||
}
|
||||
const bool ha_dag = is_ha_dag(dag.get_type());
|
||||
const bool ha_dag = dag.is_ha_dag();
|
||||
dag.~ObIDag();
|
||||
if (ha_dag) {
|
||||
ha_allocator_.free(&dag);
|
||||
|
||||
@ -336,6 +336,8 @@ public:
|
||||
virtual int generate_next_dag(ObIDag *&next_dag) { UNUSED(next_dag); return common::OB_ITER_END; }
|
||||
virtual int set_result(const int32_t result) { UNUSED(result); return common::OB_SUCCESS; }
|
||||
|
||||
virtual bool is_ha_dag() const { return false; }
|
||||
|
||||
DECLARE_VIRTUAL_TO_STRING;
|
||||
DISABLE_COPY_ASSIGN(ObIDag);
|
||||
public:
|
||||
@ -473,6 +475,7 @@ public:
|
||||
{
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
virtual bool is_ha_dag_net() const { return true; }
|
||||
public:
|
||||
friend class ObTenantDagScheduler;
|
||||
|
||||
@ -822,17 +825,6 @@ public:
|
||||
int cancel_dag_net(const ObDagId &dag_id);
|
||||
int get_complement_data_dag_progress(const ObIDag *dag, int64_t &row_scanned, int64_t &row_inserted);
|
||||
|
||||
OB_INLINE bool is_ha_dag(ObDagType::ObDagTypeEnum type) const
|
||||
{
|
||||
return ObDagType::DAG_TYPE_MIGRATE <= type &&
|
||||
ObDagType::DAG_TYPE_REMOVE_MEMBER >= type;
|
||||
}
|
||||
OB_INLINE bool is_ha_dag_net(ObDagNetType::ObDagNetTypeEnum type) const
|
||||
{
|
||||
return ObDagNetType::DAG_NET_TYPE_MIGARTION <= type &&
|
||||
ObDagNetType::DAG_NET_TYPE_BACKUP_CLEAN >= type;
|
||||
}
|
||||
|
||||
private:
|
||||
typedef common::ObDList<ObIDag> DagList;
|
||||
typedef common::ObDList<ObIDagNet> DagNetList;
|
||||
@ -1006,7 +998,7 @@ int ObTenantDagScheduler::alloc_dag(T *&dag)
|
||||
COMMON_LOG(WARN, "Dag Object is too large", K(ret), K(sizeof(T)));
|
||||
} else {
|
||||
T tmp_dag;
|
||||
common::ObFIFOAllocator *allocator = is_ha_dag(tmp_dag.get_type()) ? &ha_allocator_ : &allocator_;
|
||||
common::ObFIFOAllocator *allocator = tmp_dag.is_ha_dag() ? &ha_allocator_ : &allocator_;
|
||||
if (NULL == (buf = allocator->alloc(sizeof(T)))) {
|
||||
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
||||
COMMON_LOG(WARN, "failed to alloc dag", K(ret));
|
||||
@ -1030,7 +1022,7 @@ template<typename T>
|
||||
void ObTenantDagScheduler::free_dag_net(T *&dag_net)
|
||||
{
|
||||
if (OB_NOT_NULL(dag_net)) {
|
||||
const bool ha_dag_net = is_ha_dag_net(dag_net->get_type());
|
||||
const bool ha_dag_net = dag_net->is_ha_dag_net();
|
||||
dag_net->~T();
|
||||
if (ha_dag_net) {
|
||||
ha_allocator_.free(dag_net);
|
||||
@ -1054,7 +1046,7 @@ int ObTenantDagScheduler::create_and_add_dag_net(const ObIDagInitParam *param, T
|
||||
COMMON_LOG(WARN, "scheduler is not init", K(ret));
|
||||
} else {
|
||||
T tmp_dag_net;
|
||||
common::ObFIFOAllocator *allocator = is_ha_dag_net(tmp_dag_net.get_type()) ? &ha_allocator_ : &allocator_;
|
||||
common::ObFIFOAllocator *allocator = tmp_dag_net.is_ha_dag_net() ? &ha_allocator_ : &allocator_;
|
||||
if (NULL == (buf = allocator->alloc(sizeof(T)))) {
|
||||
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
||||
COMMON_LOG(WARN, "failed to alloc dag_net", K(ret));
|
||||
|
||||
@ -227,6 +227,7 @@ class ObBackupDag : public share::ObIDag
|
||||
public:
|
||||
explicit ObBackupDag(const ObBackupDagSubType &sub_type);
|
||||
virtual ~ObBackupDag();
|
||||
virtual bool is_ha_dag() const override { return true; }
|
||||
ObBackupDagSubType get_sub_type() const { return sub_type_; };
|
||||
INHERIT_TO_STRING_KV("ObIDag", ObIDag, K_(sub_type));
|
||||
protected:
|
||||
|
||||
@ -100,6 +100,7 @@ public:
|
||||
{ return lib::Worker::CompatMode::MYSQL; }
|
||||
virtual uint64_t get_consumer_group_id() const override
|
||||
{ return consumer_group_id_; }
|
||||
virtual bool is_ha_dag() const override { return true; }
|
||||
int create_first_task();
|
||||
|
||||
INHERIT_TO_STRING_KV("ObIDag", ObIDag, KP(this), K_(param), K_(result));
|
||||
|
||||
@ -648,7 +648,6 @@ int ObCompactionDiagnoseMgr::do_tenant_major_merge_diagnose(
|
||||
} else {
|
||||
ObTenantTabletScheduler *scheduler = MTL(ObTenantTabletScheduler*);
|
||||
const int64_t frozen_scn = MAX(scheduler->get_frozen_version(), MTL(ObTenantFreezeInfoMgr*)->get_latest_frozen_version());
|
||||
if (frozen_scn == scheduler->get_merged_version()) {
|
||||
SMART_VAR(ObArray<ObTabletReplica>, uncompacted_tablets) {
|
||||
if (OB_FAIL(major_freeze_service->get_uncompacted_tablets(uncompacted_tablets))) {
|
||||
LOG_WARN("fail to get uncompacted tablets", KR(ret));
|
||||
@ -684,7 +683,6 @@ int ObCompactionDiagnoseMgr::do_tenant_major_merge_diagnose(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -77,6 +77,7 @@ public:
|
||||
virtual uint64_t get_consumer_group_id() const override { return consumer_group_id_; }
|
||||
virtual int init_by_param(const share::ObIDagInitParam *param) override;
|
||||
virtual int create_first_task() override;
|
||||
virtual bool is_ha_dag() const override { return true; }
|
||||
protected:
|
||||
bool is_inited_;
|
||||
ObLSRemoveMemberCtx ctx_;
|
||||
|
||||
@ -149,6 +149,7 @@ public:
|
||||
{ return consumer_group_id_; }
|
||||
ObStorageHADagType get_sub_type() const { return sub_type_; }
|
||||
ObIHADagNetCtx *get_ha_dag_net_ctx() const { return ha_dag_net_ctx_; }
|
||||
virtual bool is_ha_dag() const override { return true; }
|
||||
|
||||
INHERIT_TO_STRING_KV("ObIDag", ObIDag, KPC_(ha_dag_net_ctx), K_(sub_type), K_(result_mgr));
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user