本技术涉及大数据,尤其涉及一种多级事务的异常处理方法、装置、设备、介质及程序产品。
背景技术:
1、事务(transaction)被视为单一的并发控制单位,是用户定义的一个操作序列,这些操作序列中的操作要么全部完成,要不全部不完成,其主要目的是确保数据的一致性和完整性。
2、目前主要依赖于spring框架来实现事务管理,为了和spring的设计理念保持一致,平台事务管理器(platformtransactionmanager)可以抛出事务异常(transactionexception),这是一种运行时异常(即继承自java语言的运行时异常类),这意味着如果捕获到事务异常,会对事务进行回滚(rollback)。开发人员(应用程序代码)有时候会在事务内部捕获这些异常并进行处理。
3、但是,开发人员并不总是按照约定编写程序,因此当开发人员在业务逻辑中不恰当地捕获底层事务抛出异常并进行处理时,可能导致顶层事务拦截器无法感知到该异常,从而执行到事务提交逻辑,并在提交时因检测到底层事务的回滚标志而触发非预期回滚异常(unexpectedrollbackexception),而丢失了导致事务回滚的根本原因,导致异常处理系统或者开发人员难以快速排查错误。
技术实现思路
1、本技术提供一种多级事务的异常处理方法、装置、设备、介质及程序产品,用以解决嵌套事务丢失事务回滚原因所导致的错误排查困难的问题。
2、第一方面,本技术提供一种多级事务的异常处理方法,所述多级事务包括顶层事务和至少一个底层事务,所述方法包括:
3、创建异常回滚清单,所述异常回滚清单用于记录所述多级事务对应的回滚日志;
4、执行各级事务处理进程,若任一底层事务处理过程中捕获到异常,则触发针对所述底层事务的异常回滚操作并生成第一回滚日志,并将所述第一回滚日志写入所述异常回滚清单中;其中,任一底层事务的异常回滚操作触发顶层事务的异常回滚操作;
5、将预创建的异常回滚追踪对象和所述异常回滚清单进行绑定,得到关于异常回滚追踪对象的绑定信息;
6、在各级事务处理完成时,若检测到任一级事务设置回滚标志,所述回滚标志在任一级事务触发异常回滚操作时生成,则基于所述绑定信息向异常处理系统抛出异常。
7、在一种实施方式中,所述方法还包括:
8、若顶层事务处理过程中捕获到异常,则触发针对所述多级事务处理进程的全局异常回滚操作并生成第二回滚日志;
9、将所述第二回滚日志写入所述异常回滚清单中。
10、在一种实施方式中,所述方法还包括:
11、创建数据库连接管理对象和线程私有缓存;其中,所述数据库管理对象用于管理所述多级事务对应的数据库连接信息以及各底层事务的回滚标志;
12、将所述数据库连接管理对象缓存至所述线程私有缓存中。
13、在一种实施方式中,所述将所述数据库连接管理对象缓存至所述线程私有缓存中,包括:
14、基于事务同步管理工具,将所述数据库连接管理对象缓存至所述线程私有缓存中,使得所述线程私有缓存存储各级事务处理过程中对应的数据库连接信息以及事务的回滚标志。
15、在一种实施方式中,在创建所述异常回滚清单之后,还包括:
16、基于事务同步管理工具,将所述异常回滚清单缓存至所述线程私有缓存中,以实现所述异常回滚清单和所述数据库连接管理对象之间的绑定。
17、在一种实施方式中,还包括:
18、针对所述多级事务处理进程,每启动处理任一级事务之前,基于拦截切面读取所述事务的事务定义并生成针对所述事务的拦截点标识符,得到各级事务的事务定义和拦截点标识符;
19、根据各级事务的事务定义和所述拦截点标识符,创建各级事务的事务信息对象,所述事务信息对象用于在事务处理时记录的事务信息,并将所述事务信息缓存至线程私有缓存中。
20、在一种实施方式中,所述方法还包括:
21、响应于各底层事务设置事务状态完成标志,且所述顶层事务未设置事务完成标志,根据所述任一底层事务设置的回滚标志,生成第三回滚日志;
22、将所述第三回滚日志写入所述异常回滚清单中。
23、在一种实施方式中,所述方法还包括:
24、响应于各级事务设置事务状态完成标志,依次清理所述线程私有缓存中各级事务的事务信息。
25、在一种实施方式中,所述方法还包括:
26、清理所述线程私有缓存中除了所述事务信息之外的其它关于所述多级事务的缓存信息,所述缓存信息包括所述异常回滚清单。
27、在一种实施方式中,所述方法应用于客户端,在创建异常回滚清单之前,还包括:
28、响应于用户在客户端发起的业务请求,所述业务请求为针对多级业务的请求,基于拦截切面,将针对所述业务请求的业务方法封装为所述多级事务。
29、在一种实施方式中,所述方法还包括:
30、在基于所述绑定信息向异常处理系统抛出异常时,向用户反馈业务处理失败的错误信息。
31、第二方面,本技术提供一种多级事务的异常处理装置,所述装置包括:
32、清单创建模块,其设置为创建异常回滚清单,所述异常回滚清单用于记录所述多级事务对应的回滚日志;
33、日志生成模块,其设置为执行各级事务处理进程,若任一底层事务处理过程中捕获到异常,则触发针对所述底层事务的异常回滚操作并生成第一回滚日志,并将所述第一回滚日志写入所述异常回滚清单中;其中,任一底层事务的异常回滚操作触发顶层事务的异常回滚操作;
34、绑定模块,其设置为将预创建的异常回滚追踪对象和所述异常回滚清单进行绑定,得到关于异常回滚追踪对象的绑定信息;
35、异常抛出模块,其设置为在各级事务处理完成时,若检测到任一级事务设置回滚标志,所述回滚标志在任一级事务触发异常回滚操作时生成,则基于所述绑定信息向异常处理系统抛出异常。
36、第三方面,本技术提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
37、所述存储器存储计算机执行指令;
38、所述处理器执行所述存储器存储的计算机执行指令,以实现上述第一方面提供的多级事务的异常处理方法。
39、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面提供的多级事务的异常处理方法。
40、第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时上述第一方面提供的多级事务的异常处理方法。
41、本技术提供的多级事务的异常处理方法、装置、设备、介质及程序产品,通过创建异常回滚清单以记录各级事务异常回滚时的回滚日志,在底层事务处理过程中针对异常回滚操作生成回滚日志并添加在异常回滚清单中,使用异常回滚追踪对象与异常回滚清单进行绑定,当事务处理完成时检测到回滚标志,根据绑定信息抛出异常,实现了异常原因的记录和追踪,解决了嵌套事务丢失事务回滚原因所导致的错误排查困难的问题,使得异常处理系统或开发人员能够快速识别异常发生原因,并进行高效排错。
1.一种多级事务的异常处理方法,其特征在于,所述多级事务包括顶层事务和至少一个底层事务,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,还包括:
3.根据权利要求1或2所述的方法,其特征在于,还包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述数据库连接管理对象缓存至所述线程私有缓存中,包括:
5.根据权利要求3所述的方法,其特征在于,在创建所述异常回滚清单之后,还包括:
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
7.根据权利要求6所述的方法,其特征在于,还包括:
8.根据权利要求6所述的方法,其特征在于,还包括:
9.根据权利要求6或7所述的方法,其特征在于,还包括:
10.根据权利要求1-5任一项所述的方法,其特征在于,所述方法应用于客户端,在创建异常回滚清单之前,还包括:
11.根据权利要求9所述的方法,其特征在于,还包括:
12.一种多级事务的异常处理装置,其特征在于,所述装置包括:
13.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-11中任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-11中任一项所述的多级事务的异常处理方法。
