@Override
public void onComplete(final Throwable failure, final Object reply) throws Throwable {
if(failure != null) {
- LOG.error("InvokeRpc failed", failure);
+
+ // When we return a failure to the caller they can choose to log it if they like
+ // so here we just do basic warn logging by default and log the stack trace only when debug
+ // is enabled
+
+ LOG.warn("InvokeRpc failed rpc = {}, identifier = {}", rpcMsg.getRpc(), rpcMsg.getIdentifier());
+
+ if(LOG.isDebugEnabled()){
+ LOG.debug("Detailed Error", failure);
+ }
final String message = String.format("Execution of RPC %s failed", rpcMsg.getRpc());
Collection<RpcError> errors = ((RpcErrorsException)failure).getRpcErrors();
}
final RpcResponse rpcReply = (RpcResponse)reply;
- final NormalizedNode<?, ?> result =
- NormalizedNodeSerializer.deSerialize(rpcReply.getResultNormalizedNode());
+ final NormalizedNode<?, ?> result;
+
+ if(rpcReply.getResultNormalizedNode() == null){
+ result = null;
+ LOG.debug("Received response for invoke rpc : {} result is null", rpcMsg.getRpc());
+ } else {
+ result = NormalizedNodeSerializer.deSerialize(rpcReply.getResultNormalizedNode());
+ LOG.debug("Received response for invoke rpc : {} result : {}", rpcMsg.getRpc(), result);
+ }
+
settableFuture.set(new DefaultDOMRpcResult(result));
}
};