Propagation.REQUIRES_NEW 导致 LockWaitTimeOutException

2023-12-13

有两个函数 A 和 B,它们是用 Transactional 注解定义的。

我从 A 给 B 打电话。

@Transactional(value=Constants.READ_WRITE_REQUEST)
public int A(....){
    B();
}

@Transactional(propagation=Propagation.REQUIRES_NEW,value=Constants.READ_WRITE_REQUEST)
public int B(....){
     C();        
}

@Transactional(value=Constants.READ_WRITE_REQUEST)
public int C(....){
    ...
}

结果是

Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)

    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)

    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)

我从函数 B 中删除了 Propagation.REQUIRES_NEW ,问题得到了解决。

是因为旧事务持有锁而创建了新事务吗? 对此有什么想法吗?


看起来像是某种死锁,两个事务,外部(来自A)和内部(来自B)拥有锁/尝试锁定同一资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Propagation.REQUIRES_NEW 导致 LockWaitTimeOutException 的相关文章

  • 通过 html tidy 提供渲染 jsp 页面

    我有一个在 Glassfish 上运行的 Java 项目 它会呈现一些难看的 HTML 这是使用各种内部和外部 JSP 库的副作用 我想设置某种渲染后过滤器 通过 HTMLTidy 提供最终的 HTML 这样源代码就很好且整洁 有助于调试
  • 初始堆大小无效。无法创建Java虚拟机

    我遇到了下一个问题 我尝试通过startup bat手动启动Tomcat 但似乎没有显示任何结果 然后我尝试运行shutdown bat 控制台显示如下 D apache tomcat 7 0 35 bin gt startup bat U
  • 如何为java注释处理器编写自动化单元测试?

    我正在尝试使用 java 注释处理器 我可以使用 JavaCompiler 编写集成测试 事实上我现在正在使用 hickory 我可以运行编译过程并分析输出 问题 即使我的注释处理器中没有任何代码 单个测试也会运行大约半秒 对于以 TDD
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • AffineTransform.rotate() - 如何同时缩放、旋转和缩放?

    我有以下代码 它可以完成我想要绘制一个上面有一些棋子的棋盘的 第一部分 Image pieceImage getImage currentPiece int pieceHeight pieceImage getHeight null dou
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 无法自动装配 org.springframework.mail.javamail.JavaMailSender

    尝试运行我的应用程序时遇到以下问题 所有的东西都调试过了 还是一无所获 IDE 毫无问题地找到了 bean 所以我对这里发生的情况感到非常困惑 SEVERE Exception sending context initialized eve
  • 如何允许Spring Boot中启用CORS的所有请求?

    In my 弹簧靴应用程序 目前我有这样的课程 SpringBootApplication public class TestApplication public static void main String args SpringApp
  • bufferedinputstream 中标记读取限制有什么用

    我是Java流的新手 我想读取特定的文件内容 然后需要从头开始读取 我创建了一个 BufferedInputStream 但我对 BufferedInputStream mark int markLimit 的文档感到困惑 文档说 publ
  • javax.xml.bind.JAXBException: 类 *** 及其任何超类在此上下文中均未知

    我正在尝试通过 REST Web 服务传递对象 以下是我的课程 使用一些示例代码解释了我需要的功能 Rest Web 服务类方法 POST Path find Consumes MediaType APPLICATION FORM URLE
  • Java 中更高级的泛型

    假设我有以下课程 public class FixExpr Expr
  • 更新分页。是否可以?

    他们是否存在一些方法来处理更新分页 例如我有 100 行类型 Id private Integer id Column private boolean flag Column private Date last 一开始它们看起来像 id f
  • Lucene/Hibernate 搜索锁定异常

    我使用 Hibernate Search 在 Web 应用程序上索引和全文搜索项目 没有问题 来自我的 pom xml
  • 如何创建具有同等时间元素的 JavaFX 转换?

    我正在尝试 JavaFX 和动画 尤其是PathTransition 我正在创建一个简单的程序 使球 弹跳 而不使用QuadCurveTo班级 到目前为止 这是我的代码 Ellipse ball new Ellipse 375 250 10
  • Spring Boot 访问 H2 控制台

    我有一个基本的 Spring Boot 应用程序 嵌入式 Tomcat Thymeleaf 模板引擎 我创建了这个 bean 来访问控制台 Bean public ServletRegistrationBean h2ConsoleServl
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • 使用自动布局,如何根据图像使 UIImageView 大小动态变化?

    我想要我的UIImageView根据其显示的实际图像的大小来放大或缩小 但我希望它保持垂直居中并且距离超级视图的前缘 10 点 但是 如果我设置这两个约束 它会抱怨我没有设置足够的约束来满足自动布局 对我来说 它似乎完美地描述了我想要的东西
  • 如何集成nodeJS + Socket.IO和PHP?

    我最近一直在四处寻找 寻找一种在nodeJS和PHP之间进行通信的好方法 这个想法是 nodeJS 仍然很新 仅用它来开发完整的应用程序可能有点棘手 此外 您可能只需要项目的一个模块 例如实时通知 聊天 并且您希望使用 PHP 管理所有其他
  • 如何在 UIPopoverController 之上添加视图

    我有一个 iPad 应用程序 其中有一个 抽屉 表显示在弹出窗口中 用户可以点击并按住抽屉中的某个项目 将该项目从抽屉中拖出并拖入我的主视图中 那部分工作正常 不幸的是 被拖动的视图出现在弹出窗口下方 并且太小而无法看到 直到从其下方拖出为
  • Excel VBA:正则表达式 - 获取文件名

    如何获取文件名 没有路径和扩展名 像 我的文件名 来自以下完整路径 C A B C D E F 0123456789 G 文件名 txt Public Function GetFileNameWithoutExt ByVal fullPat
  • Windows 10 Git 推送表示一切都是最新的,但没有进行更改

    我正在使用 MINGW64 将更改推送到远程存储库 当我做出新的更改时 我会添加它并提交 当我推送它时 它说它做了更改 然后我去了 github 但没有进行更改 当我从 Mac 和桌面推送时就会发生这种情况 我还尝试访问该网站并手动执行此操
  • 如何使用 BeautifulSoup 查找 HTML 页面中

    元素内的所有文本

    我需要使用 Python 中的 BeautifulSoup 查找 HTML 文件中段落元素内的所有可见标签 例如 p Many hundreds of named mango a href wiki Cultivar title Culti
  • 如何在 Mac 上的 Python 中使用 CGEventCreateKeyboardEvent?

    我已经安装了 pyobjc 带有 Quartz 我想知道如何使用 CGEventCreateKeyboardEvent 正确创建键盘事件 请 我在互联网上根本找不到它 而且我什至不知道要导入什么 一个示例代码会很好 告诉我要导入什么以及将什
  • JMeter - / 在后续 HTTP 请求中发布时替换为 %2F

    应用程序 ASP NET 正则表达式后处理器捕获的值 VIEWSTATE wEPDwULLTEwMjgyMTI3ODAPZBYCAgEPZBYCAgEPDxYCHgRUZXh0ZWRkZAX cy5B 46umWN01upyRg2q kD
  • 访问 DStream 集合

    我正在尝试访问已过滤的 DStream 的集合 就像在该问题的解决方案中一样 Spark Streaming 基于过滤器参数分割输入流的最佳方法 我按如下方式创建集合 val statuCodes Set 200 500 404 spanT
  • 从图像中裁剪圆形缩略图的最简单方法是什么?

    我正在尝试从此图像中裁剪一个居中 或不居中 的圆 我从有关堆栈溢出主题的现有问题中窃取了这段代码 但出了问题 import cv2 file dog png img cv2 imread file img cv2 cvtColor img
  • 在 WooCommerce 产品搜索中启用自定义分类法

    我想要的是 修改 WooCommerce 搜索表单 在前端 的查询 通过搜索产品的名称 描述和产品标签来显示产品 我拥有的 我正在尝试使用这段代码受到这个答案的启发返回产品名称和描述的结果 但如果我使用标签名称进行搜索 则没有结果 搜索查询
  • 使用递归回溯查找有向图中的所有循环

    我正在研究使用递归回溯在有向图中查找循环 有一个建议的伪代码here 在这里 dfs adj node visited if visited node if node start found a path return visited no
  • Smarty 正则表达式匹配

    我有一个 smarty 变量 我想知道它是否与某些字符串匹配
  • Windows 应用商店应用程序中的 HtmlAgilityPack

    因此 我在控制台应用程序中有一些工作测试代码 我将其转移到 Windows 应用商店应用程序 现在的问题是 我刚刚复制了控制台应用程序中的 HtmlAgilityPack 代码 但现在它不起作用 我确实有 HtmlAgilityPack 作
  • 在 Android API 中调用私有(未发布)方法

    我需要检查当前在 OS 2 0 2 3 中连接了哪些 BT 耳机 不仅仅是配对 此类功能直到 API 版本 11 才出现 其中引入了蓝牙耳机类 但之前的 API 中已经存在一个名为 BluetoothHeadset 的类 但它无法公开访问
  • 如何将 wav 文件填充到特定长度?

    我正在使用波形文件来制作深度学习模型 它们的长度不同 所以我想全部填充 使用 python 达到 16 秒长度 如果我理解正确 问题是将所有长度固定为给定长度 因此 解决方案会略有不同 from pydub import AudioSegm
  • 未定义模板的隐式实例化:Boost Bug 还是 Clang Bug?

    我试图编译一些使用 Boost 1 49 的代码 并使用 trunk 中的 Clang libc 有问题的代码归结为以下内容 include
  • .NET 数据绑定的跨线程问题

    我有许多 Windows 窗体控件 用于与我的程序对象交互 目前 他们订阅对象上的 已更新 事件 并在需要时手动更新值 我想使用数据绑定替换所有 或尽可能多 的样板代码 我遇到的问题是对象状态可以随时被多个不同线程中的任何一个修改 目前我使
  • 基于 R 中不同数据帧的值进行子集化

    如果行中的每个值都大于不同数据框中的相应行 我想对数据进行子集化 我还需要跳过一些顶行 前面的这些问题对我没有帮助 但它是相关的 根据另一个数据帧的内容对数据帧进行子集化 使用来自不同数据帧的信息的数据子集 r gt A name1 nam
  • Propagation.REQUIRES_NEW 导致 LockWaitTimeOutException

    有两个函数 A 和 B 它们是用 Transactional 注解定义的 我从 A 给 B 打电话 Transactional value Constants READ WRITE REQUEST public int A B Transa