首页 > 其他分享 >Seata保留事务历史记录

Seata保留事务历史记录

时间:2023-03-10 14:35:23浏览次数:39  
标签:历史记录 事务 Seata io server reload session file seata

seata 1.6.1

store.mode=db

seata的事务完成后会被清理, 如果存库的话, 保留历史记录还是有些作用的.

接下来分享一下我的解决办法

  1. 修改删数据逻辑

    我用的是DB模式, 所以直接把

    io.seata.server.storage.db.session.DataBaseSessionManager#removeGlobalSession这个方法的删除操作改成更新操作

    修改

    @Override
    public void removeGlobalSession(GlobalSession session) throws TransactionException {
        boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_UPDATE, session);
        if (!ret) {
            throw new StoreException("removeGlobalSession failed.");
        }
    }
    

    如果是file/redis模式, 则修改对应实现类

    redis模式: io.seata.server.storage.redis.session.RedisSessionManager

    file模式: io.seata.server.storage.file.session.FileSessionManager

  2. 修改启动逻辑

    seata会在程序启动时清理掉上次未来得及清理的事务

    逻辑位于io.seata.server.session.SessionHolder#reload

    修改为:

    protected static void reload(SessionMode sessionMode) {
    
        if (ROOT_SESSION_MANAGER instanceof Reloadable) {
            ((Reloadable) ROOT_SESSION_MANAGER).reload();
        }
    }
    

    注意如果是file模式的话可能会存在问题, 我这里没梳理


标签:历史记录,事务,Seata,io,server,reload,session,file,seata
From: https://www.cnblogs.com/liangyun/p/17203233.html

相关文章

  • @Transactional事务失效情形
    #private修饰的方式,spring无法生成动态代理#没有被spring管理。类不会被加载bean,自然事务失效。#数据库本身不支持MySQL的Myisam#事务传播行为为非事务方式PROP......
  • seata1.6.1引入启动错误
    问题描述ava.lang.reflect.Proxy.haccessible:modulejava.basedoesnot"opensjava.lang.reflect"tounnamedmodule问题解决添加vm参数--add-opens=java.base/......
  • seata can not get cluster name in registry config please make sure registry conf
    问题描述使用seata1.6.1,配合dubbo3,以及nacos22023-03-1012:11:15ERRORio.seata.core.rpc.netty.NettyClientChannelManager181reconnect-cannotgetclusternam......
  • 事务隔离级别
    为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:  读未提交、读已提交、可重复读、序列化1).查看事务隔离级别SELECT @@TRANSACTION_......
  • 并发事务问题
    赃读:一个事务读到另外一个事务还没有提交的数据。  比如B读取到了A未提交的数据。2).不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读......
  • 随堂笔记14-spring之事务
    @EnableTransactionManagement工作原理:开启事务本质就是增加一个advisor,而使用@EnableTranscationManagement是向spring容器内添加俩个beanautoproxyRegisterproxyT......
  • 分布式事务-最大努力通知2 20230308
          ......
  • 长事务
    缺点长事务会导致系统存在古老视图,提交前其undolog都必须保留,会占用大量存储空间。事务启动方式显式启动事务语句需要手动提交。begin或starttransaction。回滚......
  • 事务隔离
    隔离性与隔离级别事务特点:ACID(Atomicity、Consistency、Isolation、Durability)原子性/一致性/隔离性/持久性隔离级别读未提交一个事务还没提交时,其变更就能被其他......
  • 云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘
    摘要:数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载。本文分享自华为云社区《【云图说】第270期云数据库GaussDB(forMySQL)......