在Ignite缓存中的事务性方法中,我们使用多线程方法。
IgniteCache<String, String> cache = ignite.getOrCreateCache("ABC_CACHE");
Transaction tx = ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ);
String acknowledge = cache.get(key);
if(acknowledge == null || acknowledge.length() == 0) {
if(acknowledge.contains("xyz")) {
acknowledge.append("mln");
}
flag = true;
cache.removeAsync(key);
}else {
cache.putAsync(key, acknowledge);
}
tx.commit();
tx.close();
也许你确实未能完成某些交易。
我的建议是在try()
子句中打开事务,在finally{}
中打开事务
更新: 我发现我将类A注入到扩展外部类的类C中,该类不受spring管理,如下所示: 这应该是交易失败的主要原因。 另一个问题:有没有办法让spring管理类A的事务,该类已经注入到非spring处理的anothor类中? 我正在用Spring Boot和Mybatis建立一个项目。 我有一个问题,其中一个服务类无法创建事务连接,也不会执行回滚。 我发现,如果我去掉B类中A类的注入,就像这样: 类
问题涉及的方法是: 编辑。以下是完整的堆栈跟踪(一些消息是西班牙语的):
然后执行一个简单的写-读测试,如下所示: 上面的结果就是这个错误: 2017-08-16 14:59:38.990信息6496---[main]E.B.repository.DatabaseConnectionTest:7.131秒内启动DatabaseConnectionTest(JVM运行于8.331)2017-08-16 14:59:39.872信息6496---[main]o.n.o.dr
此错误发生在,当方法运行时。 向添加注释不能解决问题-https://stackoverflow.com/a/32552558/3536552 你知道怎么修吗?
问题内容: 我们有: MyInterface有一个方法:。 当go()执行时,我们开始一个新的事务,该事务在方法完成时进行提交/回滚-很好。 现在,在go()中,我们在MyClass中调用了具有的私有方法。看来Spring会“忽略” REQUIRES_NEW批注,并且不会启动新的事务。我相信这是因为Spring AOP在接口级别(MyInterface)上运行,并且不会拦截对MyClass方法的任
尝试使用executeUpdate()插入/update/delete时引发异常。Select query工作得很好。我已经尝试了以前在Stack-Overflow中提到的类似错误的所有建议。感谢任何指导。 环境:Websphere Liberty:17.0.0.2、Eclipselink 2.6.4、JPA 2.1 在Liberty server上启用的功能 [审核]CWWKF0012I:服务器