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 提供的