fix async rpc callbcack hasn't been executed when cb.cloned failed
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user