码迷,mamicode.com
首页 > 其他好文 > 详细

记录一次由事务可重复读引起的问题

时间:2018-11-18 11:33:20      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:idc   进入   return   认证   创建   turn   start   black   blackbox   

原由是现金贷在下单时为了让订单创建的事务时间尽可能小在插入订单后单独起一个线程去机审,结果在机审中根据这个新订单号却查不到这个订单报订单不存在,原先以为是因为创建订单的事务还没提交就去查所以查不到,所以在机审的代码里写了个循环去查,中途sleep 2s。代码如下:

            orderMapper.insertSelective(order);

            // 插入订单扩展认证信息
            orderMapper.insertOrderExtendAuth(request, order.getId(), user.getId(), request.getHeader().getIp(),
                    request.getHeader().getDeviceType());

            // 更新用户单数
            userMapper.updateOrderCount(user.getId(), order.getId());

// 判断当前用户认证状态 如果已认证 则直接机审 否则跳过进入待机审
            if (info.getCrawlStatus() == CrawlStatus.AUTHED.getCode()) {
                OrderExtend orderExtend = new OrderExtend();
                orderExtend.setUserId(user.getId());
                orderExtend.setPhone(info.getPhone());
                orderExtend.setIdCard(info.getIdCard());
                orderExtend.setOrderId(order.getId());
                orderExtend.setOrderNo(orderNo);
                orderExtend.setOrderDevicetoken(request.getDevicetoken());
                orderExtend.setReportNo(info.getReportNo());
                orderExtend.setIpAddress(request.getHeader().getIp());
                orderExtend.setXinyanToken(request.getXinyanToken());
                orderExtend.setBlackBox(request.getBlackBox());
                orderExtend.setOrderAddress(request.getOrderAddress());
                new MachineApproveThread(orderExtend).start();
            }

            response.setData(orderNo);
            logger.info(String.format("应答:%s", JsonUtil.toJSONString(response)));
            return response;

 

记录一次由事务可重复读引起的问题

标签:idc   进入   return   认证   创建   turn   start   black   blackbox   

原文地址:https://www.cnblogs.com/zjhgx/p/9976914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!