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()) {
|
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) {
|
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();
|
iter->second->~ObIDagNet();
|
||||||
if (ha_dag_net) {
|
if (ha_dag_net) {
|
||||||
ha_allocator_.free(iter->second);
|
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_)) {
|
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_));
|
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();
|
dag.~ObIDag();
|
||||||
if (ha_dag) {
|
if (ha_dag) {
|
||||||
ha_allocator_.free(&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 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 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;
|
DECLARE_VIRTUAL_TO_STRING;
|
||||||
DISABLE_COPY_ASSIGN(ObIDag);
|
DISABLE_COPY_ASSIGN(ObIDag);
|
||||||
public:
|
public:
|
||||||
@ -473,6 +475,7 @@ public:
|
|||||||
{
|
{
|
||||||
return OB_SUCCESS;
|
return OB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
virtual bool is_ha_dag_net() const { return true; }
|
||||||
public:
|
public:
|
||||||
friend class ObTenantDagScheduler;
|
friend class ObTenantDagScheduler;
|
||||||
|
|
||||||
@ -822,17 +825,6 @@ public:
|
|||||||
int cancel_dag_net(const ObDagId &dag_id);
|
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);
|
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:
|
private:
|
||||||
typedef common::ObDList<ObIDag> DagList;
|
typedef common::ObDList<ObIDag> DagList;
|
||||||
typedef common::ObDList<ObIDagNet> DagNetList;
|
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)));
|
COMMON_LOG(WARN, "Dag Object is too large", K(ret), K(sizeof(T)));
|
||||||
} else {
|
} else {
|
||||||
T tmp_dag;
|
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)))) {
|
if (NULL == (buf = allocator->alloc(sizeof(T)))) {
|
||||||
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
||||||
COMMON_LOG(WARN, "failed to alloc dag", K(ret));
|
COMMON_LOG(WARN, "failed to alloc dag", K(ret));
|
||||||
@ -1030,7 +1022,7 @@ template<typename T>
|
|||||||
void ObTenantDagScheduler::free_dag_net(T *&dag_net)
|
void ObTenantDagScheduler::free_dag_net(T *&dag_net)
|
||||||
{
|
{
|
||||||
if (OB_NOT_NULL(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();
|
dag_net->~T();
|
||||||
if (ha_dag_net) {
|
if (ha_dag_net) {
|
||||||
ha_allocator_.free(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));
|
COMMON_LOG(WARN, "scheduler is not init", K(ret));
|
||||||
} else {
|
} else {
|
||||||
T tmp_dag_net;
|
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)))) {
|
if (NULL == (buf = allocator->alloc(sizeof(T)))) {
|
||||||
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
ret = common::OB_ALLOCATE_MEMORY_FAILED;
|
||||||
COMMON_LOG(WARN, "failed to alloc dag_net", K(ret));
|
COMMON_LOG(WARN, "failed to alloc dag_net", K(ret));
|
||||||
|
|||||||
@ -227,6 +227,7 @@ class ObBackupDag : public share::ObIDag
|
|||||||
public:
|
public:
|
||||||
explicit ObBackupDag(const ObBackupDagSubType &sub_type);
|
explicit ObBackupDag(const ObBackupDagSubType &sub_type);
|
||||||
virtual ~ObBackupDag();
|
virtual ~ObBackupDag();
|
||||||
|
virtual bool is_ha_dag() const override { return true; }
|
||||||
ObBackupDagSubType get_sub_type() const { return sub_type_; };
|
ObBackupDagSubType get_sub_type() const { return sub_type_; };
|
||||||
INHERIT_TO_STRING_KV("ObIDag", ObIDag, K_(sub_type));
|
INHERIT_TO_STRING_KV("ObIDag", ObIDag, K_(sub_type));
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@ -100,6 +100,7 @@ public:
|
|||||||
{ return lib::Worker::CompatMode::MYSQL; }
|
{ return lib::Worker::CompatMode::MYSQL; }
|
||||||
virtual uint64_t get_consumer_group_id() const override
|
virtual uint64_t get_consumer_group_id() const override
|
||||||
{ return consumer_group_id_; }
|
{ return consumer_group_id_; }
|
||||||
|
virtual bool is_ha_dag() const override { return true; }
|
||||||
int create_first_task();
|
int create_first_task();
|
||||||
|
|
||||||
INHERIT_TO_STRING_KV("ObIDag", ObIDag, KP(this), K_(param), K_(result));
|
INHERIT_TO_STRING_KV("ObIDag", ObIDag, KP(this), K_(param), K_(result));
|
||||||
|
|||||||
@ -648,7 +648,6 @@ int ObCompactionDiagnoseMgr::do_tenant_major_merge_diagnose(
|
|||||||
} else {
|
} else {
|
||||||
ObTenantTabletScheduler *scheduler = MTL(ObTenantTabletScheduler*);
|
ObTenantTabletScheduler *scheduler = MTL(ObTenantTabletScheduler*);
|
||||||
const int64_t frozen_scn = MAX(scheduler->get_frozen_version(), MTL(ObTenantFreezeInfoMgr*)->get_latest_frozen_version());
|
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) {
|
SMART_VAR(ObArray<ObTabletReplica>, uncompacted_tablets) {
|
||||||
if (OB_FAIL(major_freeze_service->get_uncompacted_tablets(uncompacted_tablets))) {
|
if (OB_FAIL(major_freeze_service->get_uncompacted_tablets(uncompacted_tablets))) {
|
||||||
LOG_WARN("fail to get uncompacted tablets", KR(ret));
|
LOG_WARN("fail to get uncompacted tablets", KR(ret));
|
||||||
@ -684,7 +683,6 @@ int ObCompactionDiagnoseMgr::do_tenant_major_merge_diagnose(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -77,6 +77,7 @@ public:
|
|||||||
virtual uint64_t get_consumer_group_id() const override { return consumer_group_id_; }
|
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 init_by_param(const share::ObIDagInitParam *param) override;
|
||||||
virtual int create_first_task() override;
|
virtual int create_first_task() override;
|
||||||
|
virtual bool is_ha_dag() const override { return true; }
|
||||||
protected:
|
protected:
|
||||||
bool is_inited_;
|
bool is_inited_;
|
||||||
ObLSRemoveMemberCtx ctx_;
|
ObLSRemoveMemberCtx ctx_;
|
||||||
|
|||||||
@ -149,6 +149,7 @@ public:
|
|||||||
{ return consumer_group_id_; }
|
{ return consumer_group_id_; }
|
||||||
ObStorageHADagType get_sub_type() const { return sub_type_; }
|
ObStorageHADagType get_sub_type() const { return sub_type_; }
|
||||||
ObIHADagNetCtx *get_ha_dag_net_ctx() const { return ha_dag_net_ctx_; }
|
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));
|
INHERIT_TO_STRING_KV("ObIDag", ObIDag, KPC_(ha_dag_net_ctx), K_(sub_type), K_(result_mgr));
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user