[fix] fix arb server may core and clear useless resources if creation of PALF fails

This commit is contained in:
BinChenn
2023-11-03 08:40:04 +00:00
committed by ob-robot
parent 499e7373b7
commit a2a3acd52a

View File

@ -408,11 +408,12 @@ int PalfEnvImpl::create_palf_handle_impl_(const int64_t palf_id,
} else if (0 > (pret = snprintf(base_dir, MAX_PATH_SIZE, "%s/%ld", log_dir_, palf_id))) { } else if (0 > (pret = snprintf(base_dir, MAX_PATH_SIZE, "%s/%ld", log_dir_, palf_id))) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
PALF_LOG(ERROR, "snprinf failed", K(pret), K(palf_id)); PALF_LOG(ERROR, "snprinf failed", K(pret), K(palf_id));
} else if (OB_FAIL(create_directory(base_dir))) { // Note:: order is vital, allocate memory may be fail
PALF_LOG(WARN, "prepare_directory_for_creating_ls failed!!!", K(ret), K(palf_id));
} else if (NULL == (palf_handle_impl = PalfHandleImplFactory::alloc())) { } else if (NULL == (palf_handle_impl = PalfHandleImplFactory::alloc())) {
ret = OB_ALLOCATE_MEMORY_FAILED; ret = OB_ALLOCATE_MEMORY_FAILED;
PALF_LOG(WARN, "alloc palf_handle_impl failed", K(ret)); PALF_LOG(WARN, "alloc palf_handle_impl failed", K(ret));
} else if (OB_FAIL(create_directory(base_dir))) {
PALF_LOG(WARN, "prepare_directory_for_creating_ls failed!!!", K(ret), K(palf_id));
} else if (OB_FAIL(palf_handle_impl->init(palf_id, access_mode, palf_base_info, replica_type, } else if (OB_FAIL(palf_handle_impl->init(palf_id, access_mode, palf_base_info, replica_type,
&fetch_log_engine_, base_dir, log_alloc_mgr_, log_block_pool_, &log_rpc_, &fetch_log_engine_, base_dir, log_alloc_mgr_, log_block_pool_, &log_rpc_,
log_io_worker_wrapper_.get_log_io_worker(palf_id), this, self_, &election_timer_, palf_epoch))) { log_io_worker_wrapper_.get_log_io_worker(palf_id), this, self_, &election_timer_, palf_epoch))) {