@SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public void doProcess(final RemotingContext ctx, RpcRequestCommand cmd) throws Exception {
        try {
            long currentTimestamp = System.currentTimeMillis();

            RecorderManager.getRecorder().start(RecordScene.BOLT_REQUEST_HANDLE,
                new RecordContext(cmd.getId()));

            preProcessRemotingContext(ctx, cmd, currentTimestamp);
            if (ctx.isTimeoutDiscard() && ctx.isRequestTimeout()) {
                timeoutLog(cmd, currentTimestamp, ctx);// do some log
                return;// then, discard this request
            }
            debugLog(ctx, cmd, currentTimestamp);
            // decode request all
            if (!deserializeRequestCommand(ctx, cmd, RpcDeserializeLevel.DESERIALIZE_ALL)) {
                return;
            }
            dispatchToUserProcessor(ctx, cmd);
        } finally {
            RecorderManager.getRecorder().stop(RecordScene.BOLT_REQUEST_HANDLE,
                ctx.getInvokeContext().getRecordContext());
        }
    }
@see com.alipay.remoting.AbstractRemotingProcessor#doProcess(com.alipay.remoting.RemotingContext, com.alipay.remoting.RemotingCommand)
src/main/java/com/alipay/remoting/rpc/protocol/RpcRequestProcessor.java