Fabric不支持对同一个数据的并发事务处理

Fabric不支持对同一个数据的并发事务处理,也就是说,

如果我们同时运行了invoke(一),invoke(二),那么只会第一条Transaction成功,

而第二条失败。因为在Committer节点进行读写集版本验证的时候,第二条Transaction会验证失败。这是我完全无法接受的一点

解决:直到事物处理成功下面是代码片段

       System.out.println("transactionID==>"+resp.getTransactionID());
            try{
                BlockEvent.TransactionEvent event =  org.getChannel().get().sendTransaction(successful).get(180, TimeUnit.SECONDS);
                //事务处理成功
                if (event.isValid()) {
                    System.out.println("事物处理成功");
                    resultMap.put("code", "success");
                } else {
                    System.out.println("事物处理失败");
                    resultMap.put("code", "transaction_no");
                }
            }catch (Exception e){
                System.err.println("IntermediateChaincodeID==>toOrdererResponse==>Exception:"+e.getMessage());
                resultMap.put("code", "error");
            }

下面是运行效果:

这是java sdk 提供的

 

posted @ 2019-03-05 16:12  iviv  阅读(814)  评论(0编辑  收藏  举报