[bugfix] fix potential memory leak and return code has not been set
This commit is contained in:
@ -1207,7 +1207,9 @@ int LogEngine::generate_flush_log_task_(const FlushLogCbCtx &flush_log_cb_ctx,
|
|||||||
PALF_LOG(ERROR, "alloc_log_io_flush_log_task failed", K(ret));
|
PALF_LOG(ERROR, "alloc_log_io_flush_log_task failed", K(ret));
|
||||||
} else if (OB_FAIL(flush_log_task->init(flush_log_cb_ctx, write_buf))) {
|
} else if (OB_FAIL(flush_log_task->init(flush_log_cb_ctx, write_buf))) {
|
||||||
PALF_LOG(ERROR, "init LogIOFlushLogTask failed", K(ret));
|
PALF_LOG(ERROR, "init LogIOFlushLogTask failed", K(ret));
|
||||||
} else {
|
} else {/*do nothing*/}
|
||||||
|
if (OB_FAIL(ret) && NULL != flush_log_task) {
|
||||||
|
alloc_mgr_->free_log_io_flush_log_task(flush_log_task);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1220,11 +1222,14 @@ int LogEngine::generate_truncate_log_task_(const TruncateLogCbCtx &truncate_log_
|
|||||||
if (NULL == (truncate_log_task = alloc_mgr_->alloc_log_io_truncate_log_task(palf_id_, palf_epoch_))) {
|
if (NULL == (truncate_log_task = alloc_mgr_->alloc_log_io_truncate_log_task(palf_id_, palf_epoch_))) {
|
||||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||||
PALF_LOG(ERROR, "alloc_log_io_truncate_log_task failed", K(ret));
|
PALF_LOG(ERROR, "alloc_log_io_truncate_log_task failed", K(ret));
|
||||||
} else if (truncate_log_task->init(truncate_log_cb_ctx)) {
|
} else if (OB_FAIL(truncate_log_task->init(truncate_log_cb_ctx))) {
|
||||||
PALF_LOG(ERROR, "init LogIOTruncateLogTask failed", K(ret), K_(palf_id), K_(is_inited));
|
PALF_LOG(ERROR, "init LogIOTruncateLogTask failed", K(ret), K_(palf_id), K_(is_inited));
|
||||||
} else {
|
} else {
|
||||||
PALF_LOG(TRACE, "generate_truncate_log_task_ success", K(ret), K_(palf_id), K_(is_inited));
|
PALF_LOG(TRACE, "generate_truncate_log_task_ success", K(ret), K_(palf_id), K_(is_inited));
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret) && NULL != truncate_log_task) {
|
||||||
|
alloc_mgr_->free_log_io_truncate_log_task(truncate_log_task);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1239,7 +1244,9 @@ int LogEngine::generate_truncate_prefix_blocks_task_(
|
|||||||
PALF_LOG(ERROR, "alloc_log_io_truncate_prefix_blocks_task failed", K(ret));
|
PALF_LOG(ERROR, "alloc_log_io_truncate_prefix_blocks_task failed", K(ret));
|
||||||
} else if (OB_FAIL(truncate_prefix_blocks_task->init(truncate_prefix_blocks_ctx))) {
|
} else if (OB_FAIL(truncate_prefix_blocks_task->init(truncate_prefix_blocks_ctx))) {
|
||||||
PALF_LOG(ERROR, "init LogIOTruncatePrefixBlocksTask failed", K(ret), K_(palf_id), K_(is_inited));
|
PALF_LOG(ERROR, "init LogIOTruncatePrefixBlocksTask failed", K(ret), K_(palf_id), K_(is_inited));
|
||||||
} else {
|
} else {/*do nothing*/}
|
||||||
|
if (OB_FAIL(ret) && NULL != truncate_prefix_blocks_task) {
|
||||||
|
alloc_mgr_->free_log_io_truncate_prefix_blocks_task(truncate_prefix_blocks_task);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1265,15 +1272,22 @@ int LogEngine::generate_flush_meta_task_(const FlushMetaCbCtx &flush_meta_cb_ctx
|
|||||||
PALF_LOG(ERROR, "allocate memory failed", K(ret), K_(palf_id), K_(is_inited));
|
PALF_LOG(ERROR, "allocate memory failed", K(ret), K_(palf_id), K_(is_inited));
|
||||||
} else if (OB_FAIL(serialize_log_meta_(log_meta, buf, buf_len))) {
|
} else if (OB_FAIL(serialize_log_meta_(log_meta, buf, buf_len))) {
|
||||||
PALF_LOG(ERROR, "serialize_log_meta_ failed", K(ret), K_(palf_id), K_(is_inited), K(log_meta));
|
PALF_LOG(ERROR, "serialize_log_meta_ failed", K(ret), K_(palf_id), K_(is_inited), K(log_meta));
|
||||||
} else if (OB_FAIL(flush_meta_task->init(flush_meta_cb_ctx,
|
} else if (OB_FAIL(flush_meta_task->init(flush_meta_cb_ctx, buf, buf_len))) {
|
||||||
buf, buf_len))) {
|
|
||||||
PALF_LOG(ERROR, "init LogIOFlushMetaTask failed", K(ret));
|
PALF_LOG(ERROR, "init LogIOFlushMetaTask failed", K(ret));
|
||||||
} else {
|
} else {
|
||||||
PALF_LOG(TRACE, "generate_flush_meta_task_ success", K(ret), K_(palf_id), K_(is_inited));
|
PALF_LOG(TRACE, "generate_flush_meta_task_ success", K(ret), K_(palf_id), K_(is_inited));
|
||||||
}
|
}
|
||||||
if (OB_FAIL(ret) && NULL != buf) {
|
|
||||||
mtl_free(buf);
|
if (OB_FAIL(ret)) {
|
||||||
|
//free memory
|
||||||
|
if (NULL != buf) {
|
||||||
|
mtl_free(buf);
|
||||||
|
}
|
||||||
|
if (NULL != flush_meta_task) {
|
||||||
|
alloc_mgr_->free_log_io_flush_meta_task(flush_meta_task);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1295,6 +1309,9 @@ int LogEngine::generate_flashback_task_(const FlashbackCbCtx &flashback_cb_ctx,
|
|||||||
} else {
|
} else {
|
||||||
PALF_LOG(TRACE, "generate_flashback_task_ hsuccess", K(ret), KPC(this));
|
PALF_LOG(TRACE, "generate_flashback_task_ hsuccess", K(ret), KPC(this));
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret) && NULL != flashback_task) {
|
||||||
|
alloc_mgr_->free_log_io_flashback_task(flashback_task);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user