- final SettableFuture<RpcResult<SendEchoOutput>> sendEchoOutput = getRequestContextStack()
- .storeOrFail(requestContext);
- if (!sendEchoOutput.isDone()) {
- final DeviceContext deviceContext = getDeviceContext();
- Long reserverXid = deviceContext.getReservedXid();
- if (null == reserverXid) {
- if (null == reserverXid) {
- reserverXid = deviceContext.getReservedXid();
- RequestContextUtil.closeRequestContextWithRpcError(requestContext, "Outbound queue wasn't able to reserve XID.");
- return sendEchoOutput;
- }
- }
- final Xid xid = new Xid(reserverXid);
- requestContext.setXid(xid);
-
- LOG.trace("Hooking xid {} to device context - precaution.", requestContext.getXid().getValue());
- deviceContext.hookRequestCtx(requestContext.getXid(), requestContext);
+ if (requestContext == null) {
+ getMessageSpy().spyMessage(null, MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMIT_FAILURE);
+ return failedFuture();
+ }