X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2FRemoteRpcImplementation.java;h=2a4ea2e3e6d6208a371cdb163de9ec3344df89df;hb=6e0016fba14509df5eff3314c70401c5491b2ccc;hp=360ac68a519f29695410ef50115ddc98c90f2343;hpb=f3473ee42d45f1524dcafa6cc37e19e0393e9693;p=controller.git diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java index 360ac68a51..2a4ea2e3e6 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java @@ -53,12 +53,25 @@ public class RemoteRpcImplementation implements DOMRpcImplementation { @Override public void onComplete(final Throwable failure, final Object reply) throws Throwable { if(failure != null) { - LOG.error("InvokeRpc failed", failure); - final String message = String.format("Execution of RPC %s failed", rpcMsg.getRpc()); - Collection errors = ((RpcErrorsException)failure).getRpcErrors(); - if(errors == null || errors.size() == 0) { - errors = Arrays.asList(RpcResultBuilder.newError(ErrorType.RPC, null, message)); + // 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 because of %s", + rpcMsg.getRpc(), failure.getMessage()); + Collection errors = Arrays.asList(RpcResultBuilder.newError(ErrorType.RPC, null, message)); + if(failure instanceof RpcErrorsException) { + errors = ((RpcErrorsException) failure).getRpcErrors(); + if (errors == null || errors.size() == 0) { + errors = Arrays.asList(RpcResultBuilder.newError(ErrorType.RPC, null, message)); + } } final DOMRpcResult rpcResult = new DefaultDOMRpcResult(errors); @@ -67,8 +80,16 @@ public class RemoteRpcImplementation implements DOMRpcImplementation { } 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)); } };