首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【YashanDB 数据库】大事务回滚导致其他操作无法执行,报错 YAS-02016 no free undo blocks

从第一天下午 2 点开始执行,到第二天上午 10 点,一直未执行完毕。...由于需要实施下一步操作,客户 kill 重启了数据库,之后数据库一直回滚中,导致后续执行其他操作都报错 YAS-02016 no free undo blocks问题单:大 sql 的 undo 回滚导致任何操作都无法执行...问题影响的版本YashanDB 版本:22.2.11.100问题发生原因1、UNDO 没有做调整,最大为 64GB,insert 单个表超过 100GB,UNDO 空间不足导致卡死。...2、由于 kill 导致重启对 insert into select 做回退,rollback 过程不能做 truncate 操作,UNDO 空间需要 rollback 完成之后才能释放,由于索引导致...rollback 比较慢,UNDO 一直不能释放,进而导致执行不了其他 SQL。

3800
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    工作流引擎之activiti委托功能实现

    委托场景 在业务的一些需求中,比如有些属于自己的任务无法完成,就可以把自己的任务委托给其他人,让其他人来帮你完成 如何利用activiti实现委托功能 利用activiti自带的api:taskservice...delegate(String curTaskId, String userId) { taskService.delegateTask(curTaskId, userId); } 这段代码执行后...委托任务必须有解决委托这一步骤,当解决委托后,流程并不是进行到下一个节点,而是需要被委托人有完成任务操作时方可进行到下一步,而中国式需求中大多都是解决委托就是完成任务,需要解决这个问题的话可以在调用解决委托后执行一个完成任务代码操作...因此在完成任务时,要判断是否是委托任务。...(curTaskId, variables); break; } } else { taskService.complete

    3.8K31

    Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期

    引擎在发布时自动生成的id.可以通过调用processDefinition.getId() 方法获得这个值,生成的id的格式为 key:version, 最大长度限制为64个字符, 如果在启动时抛出了一个....这时,分配到这个任务的用户或群组会被解析,也会保存到数据库里 需要注意,Activiti引擎会继续执行流程的环节,除非遇到一个 等待状态:比如用户任务 在等待状态下,当前的流程实例的状态会保存到数据库中...[单独运行]的配置,这会使用demo安装时的数据库来构建ProcessEngine public static void main(String[] args) { // Create Activiti...,他可以完成任务,意味着任务所需的所有工作都完成 taskService.complete(task.getId()); 对于Activiti引擎: 需要一个外部信息来让流程实例继续执行 任务会把自己从运行库中删除...完成第二个任务会让流程执行到结束事件,就会结束流程实例 流程实例和所有相关的运行数据都会从数据库中删除 登录Activiti Explorer就可以进行验证,可以看到保存流程运行数据的表中已经没有数据:

    59210

    工作流入门教程(flowable框架)

    前言 对于框架的选型,我推荐使用flowable框架,在最初的项目选型是选择activiti的,但是深入去了解框架的时候发现activiti还是有一些坑的,而flowable正是activiti框架的修正版...,据了解flowable的背景是activiti原班人马开发出来的框架,而主导这个框架上更是得心应手,也修复了activiti的诸多bug。...需要实现一套在产线执行错误的情况下可以回滚节点的机制 比如,产线上执行金额审批上出错了,造成这一笔资金迟迟不能运作,这是个很严重的问题,如果没有一套回滚的策略,那么你的功能在用户体验上大打折扣。...结合我本身的经历,需要提供一套在节点出错的情况下可以回滚的接口进行人工操作回退,又或者第二种,当业务上发生错误的情况,流程审核也要保持一致进行回滚。...后者是自动操作,一般用户没有察觉流程上出错了,而是业务提示报错,流程操作跟着业务一起回滚,后者是完全实现了分布式事务的回滚。实现分布式事务的回滚,可以采用TCC机制,也可以通过可靠消息实现最终一致性。

    5.3K30

    工作流Activiti框架的事务和并发!流程引擎中异步和排他操作详细解析

    ,生成一个发票,把发票发送给客户 生成发票不在同一个工作单元内了.如果生成发票出错不需要对用户任务进行回滚 Activiti实现的是完成用户任务(1),提交事务,返回给调用者应用.然后在后台的线程中...为什么会产生这样的问题: 因为服务任务配置成使用异步执行,可能相关的job都在同一时间被获取,被JobExecutor分配给不同的工作线程执行 结果是,三个单独的服务执行使用的事务在到达并发汇聚时可能重叠...,其他分支会因为乐观锁导致失败 因为流程是被job触发的,Activiti会尝试在等待一段时间后尝试执行同一个job,这段时间可以同步网关的状态 Activiti乐观锁是一个很好的解决方案吗?...: Activiti只会对同一个job重试估计次数(默认配置为3).之后,job还会在数据库里,但是不会再重试了.意味着这个操作必须手工执行job的触发 如果job有非事务方面的效果,不会因为失败的事务回滚...但是要考虑:如果有多个流程实例时.所有其他流程实例的job也会分配给其他线程同步执行 意味着虽然Activiti不会同时执行一个流程实例的排他job,但是还会同步执行多个流程实例的异步执行 通过一个总体的预测

    2.3K20

    项目实践工作流之Activiti学习(二十九)

    2.1.3.1 注意事项 使用监听器分配方式,按照监听事件去执行监听类的 notify 方法,方法如果不能正常执行也会影响任务的执行。...实际应用时,查询待办任务可能要显示出业务系统的一些相关信息,比如:查询待审批请假单任务列表需要将请假单的日期、请假天数等信息显示出来,请假天数等信息在业务系统中存在,而并没有在 activiti 数据库中存在...,所以是无法通过 activiti 的 api 查询到请假天数等信息。...实现: 在查询待办任务时,通过 businessKey(业务标识 )关联查询业务系统的请假单表,查询出请假天数等信息。...String taskId = "10305"; // 创建TaskService TaskService taskService = processEngine.getTaskService(); taskService.complete

    24320

    activiti多实例节点的任意跳转

    activityId); // 设置新流向的目标节点 newTransition.setDestination(pointActivity); // 执行转向任务...taskService.complete(taskId, variables); // 删除目标节点新流入 pointActivity.getIncomingTransitions...经查,原因是这样的: 这种方法可以实现动态跳转,不需要修改Activiti自身执行,但是会动态修改系统中的流程定义缓存对象。理论上这会出现一个多线程下,全局变量不安全的问题。...a要求驳回,所以该线程动态修改了流程定义;与此同时,b要求正常流转,但是执行过程中,依据的流程定义已被修改,可能导致b也走向了驳回。...deleteIdentityLinksByProcInstance(parentId); //要激活交路径 executionEntity.setActive(true); //去掉无用的变量,不去掉,会导致很多莫名奇妙的问题

    3K51

    Activiti6详细教程

    jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。...databaseSchemaUpdate有以下四个值: false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配时,将在启动时抛出异常...create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。...drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。 4.启动应用,会在数据库里创建28张表,表创建好之后停止应用。...taskService.claim(vacationAudit.getId(), req.getUserId().toString()); //完成审批任务 taskService.complete

    2.5K20

    2023最新版本Activiti7系列-流程中的任务

    当流程执行到用户任务时,流程将暂停,并等待相应的用户完成该任务。完成用户任务后,流程将继续执行。 用户任务可以有以下属性: 名称:用户任务的名称,用于标识任务。...当流程执行到手动任务时,流程将会暂停,直到有人手动完成该任务。   手动任务可以有多种形式,比如填写表单、审批文件、上传附件等。根据实际需求,可以自定义手动任务的表单和处理逻辑。...4.4 异常处理   使用服务任务,当执行自定义逻辑时,经常需要捕获对应的业务异常,并在流程中进行处理。...throw new BpmnError("BusinessExceptionOccurred"); } } }   在这个JavaDelegate类的execute()方法中,执行自定义业务逻辑发生异常时...可以通过这种方式访问所有Activiti服务的API。 5.脚本任务   脚本任务(script task)是自动执行的活动。当流程执行到达脚本任务时,会执行相应的脚本。

    96910

    activiti6.0工作流引擎深度解析_自定义工作流引擎

    1、Activiti工作流概述 1.1、工作流概述 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。...HistoryService activiti的历史管理类 Activiti的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间...,流程变量就是 activiti 在管理工作流时根据管理需要而设置的变量。...activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常 #2.true: activiti会对数据库中所有表进行更新操作。...如果表不存在,则自动创建 #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表) #4.drop-create: 在activiti启动时删除原来的旧表

    2.8K20

    Activiti工作流框架中流程引擎API和服务详解

    - 所有服务都是无状态的.这意味着可以在多节点集群环境下运行Activiti,每个节点都指向同一个数据库,不用担心哪个机器实际执行前端的调用.无论在哪里执行服务都没有问题 RepositoryService...2.0中的'token',基本上执行指向流程实例当前在哪里 - RuntimeService可以在流程实例等待外部触发时使用,可以用来继续流程实例.流程实例可以有很多暂停状态,而服务提供了多种方法来...'触发'实例, 接受外部触发后,流程实例就会继续向下执行 TaskService - 任务是由系统中真实人员执行的,它是Activiti这类BPMN引擎的核心功能之一, 所有与任务有关的功能都包含在...HistoryService - HistoryService提供了Activiti引擎的所有历史数据 - 在执行流程时,引擎会根据配置保存很多数据:流程实例启动时间,任务的参与者,完成任务的时间...task = taskService.createTaskQuery().singleResult(); assertEquals("My Task", task.getName()); taskService.complete

    1.1K20

    工作流 Activiti 框架中子流程的使用指南

    输入顺序流是没有意义的 当事件子流程结束时,无论当前作用域已经结束(中断事件子流程的情况或为非中断,子流程生成同步分支会结束 事件子流程的限制: Activiti只支持中断事件子流程 Activiti...) BPMN业务事务也不能使用通常的方式回滚: BPMN事务跨越了多个事务,BPMN事务取消时一些ACID事务可能已经提交了.这时不能被回滚 BPMN事务运行时间很长,缺乏隔离性和回滚机制都需要被区别对待...: 使用补偿执行回滚: 如果事务范围抛出了取消事件,会影响已经执行成功的节点,并使用补偿处理器执行补偿 隔离性的缺乏通常使用特定领域的解决方法来解决: 在上面的例子中,一个旅店房间可能会展示给第二个客户...: 取消结束事件只能触发它实际到达的补偿 如果之前服务任务抛出了未声明的异常 补偿处理器的效果无法提交,如果底层的acid事务的参与者把事务设置成必须回滚....当两个并发流程到达了取消结束事件 可能会触发两次补偿,并因为乐观锁异常失败 说明Activiti中实现BPMN事务时,相同的规则也作用域普通的流程和子流程 为了保证一致性,重要的是使用一种方式考虑实现乐观事务性的执行模型

    85410

    2023最新版本Activiti7系列-网关服务

    在Activiti7中,有以下几种类型的网关: 排他网关(Exclusive Gateway):用于在流程中进行条件判断,根据不同的条件选择不同的分支路径。...当指定的事件触发时,流程会选择对应的分支执行。   这些网关可以根据实际需求灵活地组合使用,以实现不同的流程控制逻辑。...Activiti7提供了直观的图形化界面,用户可以通过拖拽和连接网关来定义流程的分支和合并。同时,Activiti7还提供了丰富的API和扩展点,方便开发人员进行二次开发和定制。...当执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件计算为true的顺序流(当没有设置条件时,认为顺序流为true)继续流程。   ...taskService.createTaskQuery().taskAssignee("boss").list(); for (Task task : list) { taskService.complete

    49530

    一个使用示例,五个操作步骤!从此轻松掌握项目中工作流的开发

    引擎知道这个流程,我们必须先进行[发布],发布意味着引擎会把BPMN 2.0 xml解析成可以执行的东西,发布包中的所有流程定义都会添加到数据库中.这样,当引擎重启时,它依然可以获得[已发布]的流程:...对每个流程定义,都可以有很多流程实例.流程定义是"蓝图",流程实例是它的一个运行的执行 所有与流程运行状态相关的东西都可以通过RuntimeService获得.有很多方法可以启动一个新流程实例....可以在流程实例启动时添加一些流程变量, 因为第一个用户任务的表达式需要这些变量.流程变量经常会被用到,因为它们赋予来自同一个流程定义的不同流程实例的特别含义 流程变量是区分流程实例的关键 下面使用定义在流程定义...; taskService.complete(task.getId(), taskVariables); 然后流程实例就会进入到下一个环节 下一环节允许员工通过表单调整原始的请假申请.员工可以重新提交请假申请...流程不能继续执行:比如,完成任务会抛出异常,异步操作(比如定时器)也不会执行.挂起流程实例可以调用runtimeService.suspendProcessInstance方法 激活流程实例可以调用runtimeService.activateProcessInstanceXXX

    30710
    领券