当前位置: 首页 > 知识库问答 >
问题:

java.lang.IllegalStateException:启动新事务失败(当前线程已有事务

司徒志
2023-03-14

在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();

共有1个答案

冯开诚
2023-03-14

也许你确实未能完成某些交易。

我的建议是在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方法的任

  • 服务启动前事件 function beforeWorkerStart(\swoole_server $server); 在执行beforeWorkerStart事件时,框架已经完成的工作有: frameInitialize 事件内的全部事务 frameInitialized 事件内的全部事务 错误处理函数的注册 swoole_http_server对象创建,且设置了启动参数。(未启动) 在该回调事