diff --git a/deps/oblib/src/rpc/obrpc/ob_poc_rpc_proxy.cpp b/deps/oblib/src/rpc/obrpc/ob_poc_rpc_proxy.cpp index 05370bdf55..1913d2823c 100644 --- a/deps/oblib/src/rpc/obrpc/ob_poc_rpc_proxy.cpp +++ b/deps/oblib/src/rpc/obrpc/ob_poc_rpc_proxy.cpp @@ -80,19 +80,24 @@ ObAsyncRespCallback* ObAsyncRespCallback::create(ObRpcMemPool& pool, UAsyncCB* u UAsyncCB* cb = NULL; ObAsyncRespCallback* pcb = NULL; if (NULL == (pcb = (ObAsyncRespCallback*)pool.alloc(sizeof(ObAsyncRespCallback)))) { + ret = OB_ALLOCATE_MEMORY_FAILED; RPC_LOG(WARN, "alloc resp callback fail", K(ret)); } else { if (NULL != ucb) { if (NULL == (cb = ucb->clone(sp_alloc))) { + ret = OB_ALLOCATE_MEMORY_FAILED; + pcb = NULL; RPC_LOG(WARN, "ucb.clone fail", K(ret)); } else { cb->low_level_cb_ = pcb; if (cb != ucb) { cb->set_cloned(true); } + new(pcb)ObAsyncRespCallback(pool, cb); } + } else { + new(pcb)ObAsyncRespCallback(pool, NULL); } - new(pcb)ObAsyncRespCallback(pool, cb); } return pcb; }