:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.

Overview

Seata: Simple Extensible Autonomous Transaction Architecture

Build Status codecov license maven

What is Seata?

A distributed transaction solution with high performance and ease of use for microservices architecture.

Distributed Transaction Problem in Microservices

Let's imagine a traditional monolithic application. Its business is built up with 3 modules. They use a single local data source.

Naturally, data consistency will be guaranteed by the local transaction.

Monolithic App

Things have changed in a microservices architecture. The 3 modules mentioned above are designed to be 3 services on top of 3 different data sources (Pattern: Database per service). Data consistency within every single service is naturally guaranteed by the local transaction.

But how about the whole business logic scope?

Microservices Problem

How Seata do?

Seata is just a solution to the problem mentioned above.

Seata solution

Firstly, how to define a Distributed Transaction?

We say, a Distributed Transaction is a Global Transaction which is made up with a batch of Branch Transaction, and normally Branch Transaction is just Local Transaction.

Global & Branch

There are 3 basic components in Seata:

  • Transaction Coordinator(TC): Maintain status of global and branch transactions, drive the global commit or rollback.
  • Transaction Manager(TM): Define the scope of global transaction: begin a global transaction, commit or rollback a global transaction.
  • Resource Manager(RM): Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback.

Model

A typical lifecycle of Seata managed distributed transaction:

  1. TM asks TC to begin a new global transaction. TC generates an XID representing the global transaction.
  2. XID is propagated through microservices' invoke chain.
  3. RM registers local transaction as a branch of the corresponding global transaction of XID to TC.
  4. TM asks TC for committing or rollbacking the corresponding global transaction of XID.
  5. TC drives all branch transactions under the corresponding global transaction of XID to finish branch committing or rollbacking.

Typical Process

For more details about principle and design, please go to Seata wiki page.

History

Ant Financial
  • XTS: Extended Transaction Service. Ant Financial middleware team developed the distributed transaction middleware since 2007, which is widely used in Ant Financial and solves the problems of data consistency across databases and services.

  • DTX: Distributed Transaction Extended. Since 2013, XTS has been published on the Ant Financial Cloud, with the name of DTX .

Alibaba
  • TXC: Taobao Transaction Constructor. Alibaba middleware team started this project since 2014 to meet the distributed transaction problems caused by application architecture change from monolithic to microservices.
  • GTS: Global Transaction Service. TXC as an Aliyun middleware product with new name GTS was published since 2016.
  • Fescar: we started the open source project Fescar based on TXC/GTS since 2019 to work closely with the community in the future.
Seata Community
  • Seata :Simple Extensible Autonomous Transaction Architecture. Ant Financial joins Fescar, which make it to be a more neutral and open community for distributed transaction, and Fescar be renamed to Seata.

Maven dependency

<seata.version>1.4.1</seata.version>

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>${seata.version}</version>
</dependency>

Quick Start

Quick Start

Documentation

You can view the full documentation from the wiki: Seata wiki page.

Reporting bugs

Please follow the template for reporting any issues.

Contributing

Contributors are welcomed to join the Seata project. Please check CONTRIBUTING about how to contribute to this project.

Contact

Seata ecosystem

Contributors

This project exists thanks to all the people who contribute. [Contributors].

License

Seata is under the Apache 2.0 license. See the LICENSE file for details.

Who is using

These are only part of the companies using Seata, for reference only. If you are using Seata, please add your company here to tell us your scenario to make Seata better.

Alibaba Group 蚂蚁金服 阿里云 中航信 联通(浙江) 中国铁塔 滴滴 中国邮政 58集团 南航 TCL 韵达快递 科大讯飞 太极计算机 政采云 浙江公安厅 特步 欧莱雅百库 中通快递 美的集团 浙江烟草 波司登 凯京科技 点购集团 求是创新健康 科蓝 康美药业 雁联 学两手 衣二三 北京薪福社 叩丁狼教育 悦途出行 睿颐软件 有利网 赛维 安心保险 科达科技 会分期 会找房 全房通 会通教育 享住智慧 兰亮网络 桔子数科 蓝天教育 烟台欣合 阿康健康 新脉远 乾动新能源 路客精品民宿 深圳好尔美 浙大睿医 深圳市云羿贸易科技有限公司 居然之家 深圳来电科技有限公司 臻善科技 中国支付通 众网小贷 谐云科技 浙江甄品 深圳海豚网 汇通天下 九机网 有好东西 南京智慧盾 数跑科技 拉粉粉 汇通达 财新传媒 易宝支付 维恩贝特 八库 大诚若谷 杭州华网信息 成都数智索 北京超图 深圳易佰 江西群享科技有限公司 宋城独木桥网络有限公司 唯小宝(江苏)网络技术有限公司 宿迁民丰农商银行 杭州喜团科技 上海海智在线 丞家(上海)公寓管理 安徽国科新材科 易点生活 商银信支付 钛师傅云 广州力生信息 杭州启舰科技有限公司 上海美浮特 杭州中威慧云医疗科技有限公司 微链 海典软件 易族智汇(北京) 佛山宅无限 F5未来商店 甄品信息科技 行云全球汇跨境电商(杭州分部) 世纪加华 快陪练 西南石油大学 厦门服云信息科技有限公司 领课网络 美通社 睿维科技有限公司 郑州信源信息技术 荣怀集团 浙江群集大数据科技有限公司 北京易点租有限公司 浙江蕙康科技有限公司 致远创想 深圳智荟物联技术有限公司 源讯中国 武汉江寓生活服务有限公司 大账房 上海阳光喔教育科技有限公司 北京新学道教育科技有限公司 北京悦途出行网络科技公司 国信易企签 上海意贝斯特信息技术有限公司 御家汇 广州社众软件 浩鲸科技 华宇信息 中国云尚科技 卫宁健康 聚合联动 熙菱信息 鲸算科技 杭州沃朴物联科技有限公司 深圳市臻络科技有限公司
Comments
  • 求大佬,搞了一周无果,奔溃了:no available service 'null' found, please make sure registry config correct

    求大佬,搞了一周无果,奔溃了:no available service 'null' found, please make sure registry config correct

    seata1.2.0 nacos1.2.1 问题springboot项目报错

    2020-07-01 22:19:37.866  INFO 14268 --- [           main] io.seata.config.FileConfiguration        : The configuration file used is seata.conf
    2020-07-01 22:19:38.207 ERROR 14268 --- [           main] i.s.c.r.netty.NettyClientChannelManager  : no available service 'null' found, please make sure registry config correct
    2020-07-01 22:19:38.239  INFO 14268 --- [           main] .s.s.a.d.SeataAutoDataSourceProxyCreator : Auto proxy of [shardingDataSource]`
    

    已经设置: service.vgroupMapping.my_test_tx_group=default service.default.grouplist=xx.xx.xx.xx:8091

    同时config.txt

    transport.type=TCP
    transport.server=NIO
    transport.heartbeat=true
    transport.enableClientBatchSendRequest=false
    transport.threadFactory.bossThreadPrefix=NettyBoss
    transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
    transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
    transport.threadFactory.shareBossWorker=false
    transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
    transport.threadFactory.clientSelectorThreadSize=1
    transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
    transport.threadFactory.bossThreadSize=1
    transport.threadFactory.workerThreadSize=default
    transport.shutdown.wait=3
    service.vgroupMapping.my_test_tx_group=default
    service.default.grouplist=xx.xx.xx.xx:8091
    service.enableDegrade=false
    service.disableGlobalTransaction=false
    client.rm.asyncCommitBufferLimit=10000
    client.rm.lock.retryInterval=10
    client.rm.lock.retryTimes=30
    client.rm.lock.retryPolicyBranchRollbackOnConflict=true
    client.rm.reportRetryCount=5
    client.rm.tableMetaCheckEnable=false
    client.rm.sqlParserType=druid
    client.rm.reportSuccessEnable=false
    client.rm.sagaBranchRegisterEnable=false
    client.tm.commitRetryCount=5
    client.tm.rollbackRetryCount=5
    store.mode=file
    store.file.dir=file_store/data
    store.file.maxBranchSessionSize=16384
    store.file.maxGlobalSessionSize=512
    store.file.fileWriteBufferCacheSize=16384
    store.file.flushDiskMode=async
    store.file.sessionReloadReadSize=100
    store.db.datasource=druid
    store.db.dbType=mysql
    store.db.driverClassName=com.mysql.jdbc.Driver
    store.db.url=jdbc:mysql://xx.xx.xx.xx.:3306/seata?useUnicode=true
    store.db.user=root
    store.db.password=root
    store.db.minConn=5
    store.db.maxConn=30
    store.db.globalTable=global_table
    store.db.branchTable=branch_table
    store.db.queryLimit=100
    store.db.lockTable=lock_table
    store.db.maxWait=5000
    server.recovery.committingRetryPeriod=1000
    server.recovery.asynCommittingRetryPeriod=1000
    server.recovery.rollbackingRetryPeriod=1000
    server.recovery.timeoutRetryPeriod=1000
    server.maxCommitRetryTimeout=-1
    server.maxRollbackRetryTimeout=-1
    server.rollbackRetryTimeoutUnlockEnable=false
    client.undo.dataValidation=true
    client.undo.logSerialization=jackson
    server.undo.logSaveDays=7
    server.undo.logDeletePeriod=86400000
    client.undo.logTable=undo_log
    client.log.exceptionRate=100
    transport.serialization=seata
    transport.compressor=none
    metrics.enabled=false
    metrics.registryType=compact
    metrics.exporterList=prometheus
    metrics.exporterPrometheusPort=9898
    
    opened by arraycto 68
  • optimize:register the participating companies and  pull request information

    optimize:register the participating companies and pull request information

    …ion,etc

    Ⅰ. Describe what this PR did

    register the participating companies 、 pull request information、modify rootcontext,etc

    Ⅱ. Does this pull request fix one issue?

    Ⅲ. Why don't you add test cases (unit test/integration test)?

    Ⅳ. Describe how to verify it

    Ⅴ. Special notes for reviews

    opened by lj2018110133 67
  • seata 1.5.2 jpa session请求 cpu飚高 疯狂gc

    seata 1.5.2 jpa session请求 cpu飚高 疯狂gc

    @Bean
    public PlatformTransactionManager transactionManager(ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager));
        return transactionManager;
    }
    

    public void deduct(String commodityCode, int count) { String sql = "INSERT INTO asv (id, policy_apply_id, parameter_code, parameter_type, parameter_value_type, parameter_value, parameter_version, create_time) VALUES ('"+ UUID.randomUUID() +"','dbbcdf52-5b1c-407a-a50a-3d2fc5cb788f','applyCreateTime','00','string','2022-09-05 15:21:26',0,now()) ON DUPLICATE KEY UPDATE policy_apply_id=values(policy_apply_id),parameter_code=values(parameter_code),parameter_type=values(parameter_type),parameter_value_type=values(parameter_value_type),parameter_value=values(parameter_value),parameter_version=values(parameter_version),create_time=values(create_time);"; System.out.println(sql); entityManager.unwrap(Session.class).createSQLQuery(sql).executeUpdate(); System.out.println("OK"); }

    表中数据大概300w+

    status: help-wanted 
    opened by dengbaikun 57
  • feature:add function for sending messages to server affinity by xid

    feature:add function for sending messages to server affinity by xid

    Ⅰ. Describe what this PR did

    This RP enabled msg server affinity by xid , if we configure transport.enableMsgServerAffinityByXid=true, all the message with same XID will be sent to the same TC server. Then we can optimize the server with cache or concurrent 2 phase commit etc for high performance. 当设置 transport.enableMsgServerAffinityByXid=true 后,所有具有相同xid的消息发送到同一TC 服务器。这样,将来就可以进行如缓存,并发异步提交等各种优化来提升性能。

    Ⅱ. Does this pull request fix one issue?

    Ⅲ. Why don't you add test cases (unit test/integration test)?

    Ⅳ. Describe how to verify it

    Ⅴ. Special notes for reviews

    Do Not Merge 
    opened by lvxianzheng 54
  • LocalDateTime转换异常,springboot版本:2.4.4

    LocalDateTime转换异常,springboot版本:2.4.4

    ERROR 9144 --- [ch_RMROLE_1_1_8] i.s.r.d.u.parser.JacksonUndoLogParser    : json decode exception, Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
     at [Source: (byte[])"{"@class":"io.seata.rm.datasource.undo.BranchUndoLog","xid":"192.168.200.13:8091:123744921583669248","branchId":123744922053431297,"sqlUndoLogs":["java.util.ArrayList",[{"@class":"io.seata.rm.datasource.undo.SQLUndoLog","sqlType":"UPDATE","tableName":"account_tbl","beforeImage":{"@class":"io.seata.rm.datasource.sql.struct.TableRecords","tableName":"account_tbl","rows":["java.util.ArrayList",[{"@class":"io.seata.rm.datasource.sql.struct.Row","fields":["java.util.ArrayList",[{"@class":"io.seata.rm"[truncated 1860 bytes]; line: 1, column: 1076] (through reference chain: io.seata.rm.datasource.undo.BranchUndoLog["sqlUndoLogs"]->java.util.ArrayList[0]->io.seata.rm.datasource.undo.SQLUndoLog["beforeImage"]->io.seata.rm.datasource.sql.struct.TableRecords["rows"]->java.util.ArrayList[0]->io.seata.rm.datasource.sql.struct.Row["fields"]->java.util.ArrayList[4]->io.seata.rm.datasource.sql.struct.Field["value"])
    
    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
     at [Source: (byte[])"{"@class":"io.seata.rm.datasource.undo.BranchUndoLog","xid":"192.168.200.13:8091:123744921583669248","branchId":123744922053431297,"sqlUndoLogs":["java.util.ArrayList",[{"@class":"io.seata.rm.datasource.undo.SQLUndoLog","sqlType":"UPDATE","tableName":"account_tbl","beforeImage":{"@class":"io.seata.rm.datasource.sql.struct.TableRecords","tableName":"account_tbl","rows":["java.util.ArrayList",[{"@class":"io.seata.rm.datasource.sql.struct.Row","fields":["java.util.ArrayList",[{"@class":"io.seata.rm"[truncated 1860 bytes]; line: 1, column: 1076] (through reference chain: io.seata.rm.datasource.undo.BranchUndoLog["sqlUndoLogs"]->java.util.ArrayList[0]->io.seata.rm.datasource.undo.SQLUndoLog["beforeImage"]->io.seata.rm.datasource.sql.struct.TableRecords["rows"]->java.util.ArrayList[0]->io.seata.rm.datasource.sql.struct.Row["fields"]->java.util.ArrayList[4]->io.seata.rm.datasource.sql.struct.Field["value"])
    	at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
    	at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1615)
    	at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)
    	at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1077)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1332)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:331)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:199)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromAny(AsPropertyTypeDeserializer.java:195)
    	at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserializeWithType(UntypedObjectDeserializer.java:710)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1209)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:292)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:120)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromArray(AsArrayTypeDeserializer.java:53)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserializeWithType(CollectionDeserializer.java:318)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1209)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:292)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:120)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromArray(AsArrayTypeDeserializer.java:53)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserializeWithType(CollectionDeserializer.java:318)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1209)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1209)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:292)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:120)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromArray(AsArrayTypeDeserializer.java:53)
    	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserializeWithType(CollectionDeserializer.java:318)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132)
    	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:99)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1209)
    	at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
    	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4526)
    	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3529)
    	at io.seata.rm.datasource.undo.parser.JacksonUndoLogParser.decode(JacksonUndoLogParser.java:139)
    	at io.seata.rm.datasource.undo.AbstractUndoLogManager.undo(AbstractUndoLogManager.java:276)
    	at io.seata.rm.datasource.DataSourceManager.branchRollback(DataSourceManager.java:152)
    	at io.seata.rm.AbstractRMHandler.doBranchRollback(AbstractRMHandler.java:125)
    	at io.seata.rm.AbstractRMHandler$2.execute(AbstractRMHandler.java:67)
    	at io.seata.rm.AbstractRMHandler$2.execute(AbstractRMHandler.java:63)
    	at io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate(AbstractExceptionHandler.java:116)
    	at io.seata.rm.AbstractRMHandler.handle(AbstractRMHandler.java:63)
    	at io.seata.rm.DefaultRMHandler.handle(DefaultRMHandler.java:62)
    	at io.seata.core.protocol.transaction.BranchRollbackRequest.handle(BranchRollbackRequest.java:35)
    	at io.seata.rm.AbstractRMHandler.onRequest(AbstractRMHandler.java:150)
    	at io.seata.core.rpc.processor.client.RmBranchRollbackProcessor.handleBranchRollback(RmBranchRollbackProcessor.java:63)
    	at io.seata.core.rpc.processor.client.RmBranchRollbackProcessor.process(RmBranchRollbackProcessor.java:58)
    	at io.seata.core.rpc.netty.AbstractNettyRemoting.lambda$processMessage$2(AbstractNettyRemoting.java:278)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    	at java.lang.Thread.run(Thread.java:745)
    
    opened by karry-jiang 37
  • no available service 'default' found, please make sure registry config correct

    no available service 'default' found, please make sure registry config correct

    • [x] I have searched the issues of this repository and believe that this is not a duplicate.

    Ⅰ. Issue Description

    seata客户端启动的时候,日志中报错no available service 'default' found, please make sure registry config correct。

    Ⅱ. Describe what happened

    seata服务端在虚拟机的docker中启动了,配置放在nacos,seata-server也注册进去了。 image image 客户端配置如下: image image image image

    If there is an exception, please attach the exception trace:

    
    
    2020-04-09 09:28:37.527  INFO 20728 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Loading nacos data, dataId: 'order-service.yaml', group: 'DEFAULT_GROUP'
    2020-04-09 09:28:37.530  INFO 20728 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='order-service.yaml'}]}
    2020-04-09 09:28:37.533  INFO 20728 --- [           main] c.d.o.OrderServiceApplication            : No active profile set, falling back to default profiles: default
    2020-04-09 09:28:38.001  INFO 20728 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=f5c5f4c1-f03f-3300-8228-b6d9b71b8499
    2020-04-09 09:28:38.016  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.dashan.orderservice.feign.AccountFeign' of type [org.springframework.cloud.openfeign.FeignClientFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.034  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.cloud.alibaba.seata-com.alibaba.cloud.seata.SeataProperties' of type [com.alibaba.cloud.seata.SeataProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.034  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.alibaba.cloud.seata.GlobalTransactionAutoConfiguration' of type [com.alibaba.cloud.seata.GlobalTransactionAutoConfiguration$$EnhancerBySpringCGLIB$$8fbaeba5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.055  INFO 20728 --- [           main] io.seata.config.FileConfiguration        : The file name of the operation is registry.conf
    2020-04-09 09:28:38.086  WARN 20728 --- [           main] io.seata.config.ConfigurationFactory     : failed to load extConfiguration:not found service provider for : io.seata.config.ExtConfigurationProvider[null] and classloader : sun.misc.Launcher$AppClassLoader@18b4aac2
    
    io.seata.common.loader.EnhancedServiceNotFoundException: not found service provider for : io.seata.config.ExtConfigurationProvider[null] and classloader : sun.misc.Launcher$AppClassLoader@18b4aac2
    
    2020-04-09 09:28:38.096  INFO 20728 --- [           main] i.s.common.loader.EnhancedServiceLoader  : load ConfigurationProvider[Nacos] extension by class[io.seata.config.nacos.NacosConfigurationProvider]
    2020-04-09 09:28:38.111  INFO 20728 --- [           main] i.s.s.a.GlobalTransactionScanner         : Initializing Global Transaction Clients ... 
    2020-04-09 09:28:38.264  INFO 20728 --- [           main] i.s.c.r.netty.AbstractRpcRemotingClient  : RpcClientBootstrap has started
    2020-04-09 09:28:38.265  INFO 20728 --- [           main] i.s.s.a.GlobalTransactionScanner         : Transaction Manager Client is initialized. applicationId[order-service] txServiceGroup[order-service-seata-group]
    2020-04-09 09:28:38.409  INFO 20728 --- [           main] io.seata.rm.datasource.AsyncWorker       : Async Commit Buffer Limit: 10000
    2020-04-09 09:28:38.458  INFO 20728 --- [           main] i.s.c.r.netty.AbstractRpcRemotingClient  : RpcClientBootstrap has started
    2020-04-09 09:28:38.458  INFO 20728 --- [           main] i.s.s.a.GlobalTransactionScanner         : Resource Manager is initialized. applicationId[order-service] txServiceGroup[order-service-seata-group]
    2020-04-09 09:28:38.458  INFO 20728 --- [           main] i.s.s.a.GlobalTransactionScanner         : Global Transaction Clients are initialized. 
    2020-04-09 09:28:38.506  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$28ee22a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.580  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration$FeignBeanPostProcessorConfiguration' of type [com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration$FeignBeanPostProcessorConfiguration$$EnhancerBySpringCGLIB$$efa06af0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.583  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'seataFeignObjectWrapper' of type [com.alibaba.cloud.seata.feign.SeataFeignObjectWrapper] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.716  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.hibernate.validator.internal.constraintvalidators.bv.notempty.NotEmptyValidatorForCharSequence' of type [org.hibernate.validator.internal.constraintvalidators.bv.notempty.NotEmptyValidatorForCharSequence] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.720  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.hibernate.validator.internal.constraintvalidators.bv.NotNullValidator' of type [org.hibernate.validator.internal.constraintvalidators.bv.NotNullValidator] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.740  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.cloud.sentinel-com.alibaba.cloud.sentinel.SentinelProperties' of type [com.alibaba.cloud.sentinel.SentinelProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    INFO: log base dir is: C:\Users\whf\logs\csp\
    INFO: log name use pid is: false
    2020-04-09 09:28:38.825  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration$$EnhancerBySpringCGLIB$$26365007] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:38.829  INFO 20728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$1ea8e527] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2020-04-09 09:28:39.057  INFO 20728 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9020 (http)
    2020-04-09 09:28:39.075  INFO 20728 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-04-09 09:28:39.075  INFO 20728 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
    2020-04-09 09:28:39.210  INFO 20728 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2020-04-09 09:28:39.210  INFO 20728 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1661 ms
    2020-04-09 09:28:39.219  INFO 20728 --- [           main] c.a.c.s.SentinelWebAutoConfiguration     : [Sentinel Starter] register Sentinel CommonFilter with urlPatterns: [/*].
    2020-04-09 09:28:39.467  INFO 20728 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
    2020-04-09 09:28:39.583  INFO 20728 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
    2020-04-09 09:28:39.596  INFO 20728 --- [           main] s.s.a.d.SeataDataSourceBeanPostProcessor : Auto proxy of [dataSource]
    2020-04-09 09:28:39.759  INFO 20728 --- [           main] i.s.common.loader.EnhancedServiceLoader  : load DbTypeParser[druid] extension by class[io.seata.sqlparser.druid.DruidDelegatingDbTypeParser]
    2020-04-09 09:28:39.766  INFO 20728 --- [           main] i.s.common.loader.EnhancedServiceLoader  : load RegistryProvider[Nacos] extension by class[io.seata.discovery.registry.nacos.NacosRegistryProvider]
    2020-04-09 09:28:39.974 ERROR 20728 --- [           main] i.s.c.r.netty.NettyClientChannelManager  : no available service 'default' found, please make sure registry config correct
    2020-04-09 09:28:40.150  INFO 20728 --- [           main] i.s.s.a.GlobalTransactionScanner         : Bean[com.dashan.orderservice.service.impl.BaseOrderServiceImpl] with name [baseOrderServiceImpl] would use interceptor [io.seata.spring.annotation.GlobalTransactionalInterceptor]
    2020-04-09 09:28:40.168  WARN 20728 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
    2020-04-09 09:28:40.168  INFO 20728 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
    2020-04-09 09:28:40.171  WARN 20728 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
    2020-04-09 09:28:40.171  INFO 20728 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
    2020-04-09 09:28:40.290  INFO 20728 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2020-04-09 09:28:41.969  INFO 20728 --- [           main] o.s.cloud.commons.util.InetUtils         : Cannot determine local hostname
    2020-04-09 09:28:41.982  INFO 20728 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService
    2020-04-09 09:28:43.725  INFO 20728 --- [           main] o.s.cloud.commons.util.InetUtils         : Cannot determine local hostname
    2020-04-09 09:28:43.792  WARN 20728 --- [           main] c.a.c.s.d.converter.SentinelConverter    : converter can not convert rules because source is empty
    2020-04-09 09:28:43.853  INFO 20728 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9020 (http) with context path ''
    2020-04-09 09:28:43.881  INFO 20728 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, order-service 192.168.10.1:9020 register finished
    2020-04-09 09:28:43.883  INFO 20728 --- [           main] c.d.o.OrderServiceApplication            : Started OrderServiceApplication in 10.317 seconds (JVM running for 11.277)
    

    Ⅲ. Describe what you expected to happen

    Ⅳ. How to reproduce it (as minimally and precisely as possible)

    1. seata-server使用1.1.0版本,seata-client使用spring-cloud-alibaba-seata并替换seata-all为1.1.0版本
    2. seata-server在虚拟机中使用docker-compose部署,再此之前已启动mysql和nacos:
    version: "3"
    services:
      seata:
        image: seataio/seata-server:latest
        container_name: seata
        ports:
          - "8091:8091"
        environment:
          - SEATA_CONFIG_NAME=file:/root/conf/registry
          - SEATA_IP=192.168.10.130
          - SEATA_MODE=file
          - SEATA_PORT=8091
        volumes:
          - /app/cloud/seata/conf:/root/conf
          - /app/cloud/seata/logs:/root/logs
        restart: always
    
    1. seata-server的register配置如下:
    registry {
      # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
      type = "nacos"
    
      nacos {
        serverAddr = "192.168.10.130"
        namespace = ""
        cluster = "default"
      }
      eureka {
        serviceUrl = "http://localhost:8761/eureka"
        application = "default"
        weight = "1"
      }
      redis {
        serverAddr = "localhost:6379"
        db = "0"
      }
      zk {
        cluster = "default"
        serverAddr = "127.0.0.1:2181"
        sessionTimeout = 6000
        connectTimeout = 2000
        username = ""
        password = ""
      }
      consul {
        cluster = "default"
        serverAddr = "127.0.0.1:8500"
      }
      etcd3 {
        cluster = "default"
        serverAddr = "http://localhost:2379"
      }
      sofa {
        serverAddr = "127.0.0.1:9603"
        application = "default"
        region = "DEFAULT_ZONE"
        datacenter = "DefaultDataCenter"
        cluster = "default"
        group = "SEATA_GROUP"
        addressWaitTime = "3000"
      }
      file {
        name = "file.conf"
      }
    }
    
    config {
      # file、nacos 、apollo、zk、consul、etcd3
      type = "nacos"
    
      nacos {
        serverAddr = "192.168.10.130:8848"
        namespace = "7f0657a8-8986-4075-8d03-0a6afc292c16"
        group = "SEATA_GROUP"
      }
      consul {
        serverAddr = "127.0.0.1:8500"
      }
      apollo {
        appId = "seata-server"
        apolloMeta = "http://192.168.1.204:8801"
        namespace = "application"
      }
      zk {
        serverAddr = "127.0.0.1:2181"
        sessionTimeout = 6000
        connectTimeout = 2000
        username = ""
        password = ""
      }
      etcd3 {
        serverAddr = "http://localhost:2379"
      }
      file {
        name = "file.conf"
      }
    }
    
    1. seata-client的配置的截图贴在上面了,我能确定我的service.vgroupMapping没配置错。

    Ⅴ. Anything else we need to know?

    经过Debug,最终确认异常是由NacosRegistryServiceImpl.lookup(String key)方法出来的,在此类中有两个成员变量LISTENER_SERVICE_MAP和CLUSTER_ADDRESS_MAP,在第一次执行lookup方法的时候,List firstAllInstances = getNamingInstance().getAllInstances("serverAddr", clusters);这行代码的clusters只有一个元素,就是我配置的"default",但是返回出来的firstAllInstances是一个空集合,所以执行完后CLUSTER_ADDRESS_MAP里面有一个键值对,键为"default",值为空集合;而LISTENER_SERVICE_MAP会在执行subscribe方法的时候保存一个键值对,,键为"default",值为空集合,这样下次执行的时候,if (!LISTENER_SERVICE_MAP.containsKey(clusterName))这个判断就过不了了(就算过了也是一样);而lookup方法的返回值(List)CLUSTER_ADDRESS_MAP.get(clusterName);,所以返回出来的也是空集合。

    所以NettyClientChannelManager.getAvailServerList(String transactionServiceGroup)方法中返回出来的也是空集合,然后抛出异常。 image

    Ⅵ. Environment:

    • JDK version : 1.8
    • OS : seata-server: centos7 seata-client: windows10
    • Others: seata 1.1.0
    opened by ANoviceOfJava 35
  • logTable 配置不生效

    logTable 配置不生效

    • [ ] I have searched the issues of this repository and believe that this is not a duplicate.

    Ⅰ. Issue Description

    image

    Ⅱ. Describe what happened

    启动获取变量正常,删除sql执行的是默认的

    If there is an exception, please attach the exception trace:

    Just paste your stack trace here!
    

    Ⅲ. Describe what you expected to happen

    Ⅳ. How to reproduce it (as minimally and precisely as possible)

    1. xxx
    2. xxx
    3. xxx

    Ⅴ. Anything else we need to know?

    Ⅵ. Environment:

    • JDK version :
    • Seata version:
    • OS :
    • Others:
    opened by zclcs 32
  • bugfix: fix when seata and jpa are used together, their AutoConfiguration order is incorrect

    bugfix: fix when seata and jpa are used together, their AutoConfiguration order is incorrect

    • [x] I have registered the PR changes.

    Ⅰ. Describe what this PR did

    This PR is used to ensure springboot create correct transaction manager for different ORM framework.

    The original code shows that this configuration SeataTCCFenceAutoConfiguration must be executed after DataSourceTransactionManagerAutoConfiguration, but for springboot, different transaction manager for different ORM framework. this DataSourceTransactionManagerAutoConfiguration will create DataSourceTransactionManager which works for jdbc related ORM, not work for JPA.

    • JPA: JpaTransactionManager
    • Hibernate: HibernateTransactionManager
    • JDBC: DataSourceTransactionManager (actually the configuration DataSourceTransactionManagerAutoConfiguration is implemented with Ordered.LOWEST_PRECEDENCE)

    pic1

    Ⅱ. Does this pull request fix one issue?

    Ⅲ. Why don't you add test cases (unit test/integration test)?

    Ⅳ. Describe how to verify it

    Removed this config. It will be work because this config SeataTCCFenceAutoConfiguration already set the "ConditionalOnBean" with "org.springframework.transaction.PlatformTransactionManager". And the order is correct now.

    pic2

    Ⅴ. Special notes for reviews

    type: bug module/seata-spring-boot-starter 
    opened by zhuyoufeng 31
  • 调用没有自动传递xid

    调用没有自动传递xid

    #seata1.3+nacos1.3 fegin 没有自动传递xid

    调用方代码 @GlobalTransactional(timeoutMills = 300000, name = "test_seate_all_transaction_name",rollbackFor = Exception.class ) @Override public Object zhix(String tx) { String xId = RootContext.getXID(); jdbcTemplate.update("update seata_test set name = 'basic_"+ UuidUtil.uuid() +"' where id = 1"); String txt = checkRfidClient.textTx(xId); if(System.currentTimeMillis()%2 == 0) { System.out.println(1/0); } return FastMap.newDefaultInstance() .set("Tx txt",txt); }

    #被调用方 @RequestMapping(value = "/rfid/test") @Transactional public Object testTx(@RequestBody String xId){ RootContext.bind(xId);//必须指定,否则拿到null?? jdbcTemplate.update("update seata_test set name = 'rfid_"+ UuidUtil.uuid() +"' where id = 1"); return xId+"_testTx"; }

    opened by tangyongjian-tz 31
  • feature: support apm with skywalking

    feature: support apm with skywalking

    Ⅰ. Describe what this PR did

    support apm with skywalking

    Ⅱ. Does this pull request fix one issue?

    https://github.com/seata/seata/issues/714 https://github.com/seata/seata/issues/884 https://github.com/apache/skywalking/pull/6579

    Ⅲ. Why don't you add test cases (unit test/integration test)?

    Ⅳ. Describe how to verify it

    Ⅴ. Special notes for reviews

    opened by zhaoyuguang 28
  • release 1.3.0,全局事务Propagation.REQUIRES_NEW没有正常运行

    release 1.3.0,全局事务Propagation.REQUIRES_NEW没有正常运行

    io.seata.tm.api.TransactionalTemplate中

    public Object execute(TransactionalExecutor business) throws Throwable {
            // 1 get transactionInfo
            TransactionInfo txInfo = business.getTransactionInfo();
            if (txInfo == null) {
                throw new ShouldNeverHappenException("transactionInfo does not exist");
            }
            // 1.1 get or create a transaction
            GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
    
            // 1.2 Handle the Transaction propatation and the branchType
            Propagation propagation = txInfo.getPropagation();
            SuspendedResourcesHolder suspendedResourcesHolder = null;
            try {
                switch (propagation) {
                    case NOT_SUPPORTED:
                        suspendedResourcesHolder = tx.suspend(true);
                        return business.execute();
                    case REQUIRES_NEW:
                        suspendedResourcesHolder = tx.suspend(true);
                        break;
                    case SUPPORTS:
                        if (!existingTransaction()) {
                            return business.execute();
                        }
                        break;
                    case REQUIRED:
                        break;
                    case NEVER:
                        if (existingTransaction()) {
                            throw new TransactionException(
                                    String.format("Existing transaction found for transaction marked with propagation 'never',xid = %s"
                                            ,RootContext.getXID()));
                        } else {
                            return business.execute();
                        }
                    case MANDATORY:
                        if (!existingTransaction()) {
                            throw new TransactionException("No existing transaction found for transaction marked with propagation 'mandatory'");
                        }
                        break;
                    default:
                        throw new TransactionException("Not Supported Propagation:" + propagation);
                }
    
    
                try {
    
                    // 2. begin transaction
                    beginTransaction(txInfo, tx);
    
                    Object rs = null;
                    try {
    
                        // Do Your Business
                        rs = business.execute();
    
                    } catch (Throwable ex) {
    
                        // 3.the needed business exception to rollback.
                        completeTransactionAfterThrowing(txInfo, tx, ex);
                        throw ex;
                    }
    
                    // 4. everything is fine, commit.
                    commitTransaction(tx);
    
                    return rs;
                } finally {
                    //5. clear
                    triggerAfterCompletion();
                    cleanUp();
                }
            } finally {
                tx.resume(suspendedResourcesHolder);
            }
    
        }
    

    在判断propation之前获取了当前的全局事务对象: GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();

    在判断propation时,挂起了当前全局事务:

    case REQUIRES_NEW:
                        suspendedResourcesHolder = tx.suspend(true);
                        break;
    

    但之后执行业务代码之前并没有重新创建全局事务:

                    // 2. begin transaction
                    beginTransaction(txInfo, tx);
    
                    Object rs = null;
                    try {
    
                        // Do Your Business
                        rs = business.execute();
    
                    } catch (Throwable ex) {
    
                        // 3.the needed business exception to rollback.
                        completeTransactionAfterThrowing(txInfo, tx, ex);
                        throw ex;
                    }
    
                    // 4. everything is fine, commit.
                    commitTransaction(tx);
    

    直至最后,无论是beginTransaction方法、commitTransaction方法还是triggerAfterCompletion里的回滚方法,都是以参与者的身份执行,并不会与TC进行通信,没办法起到Propagation.REQUIRES_NEW的目的

    应该在该代码break之前

    case REQUIRES_NEW:
                        suspendedResourcesHolder = tx.suspend(true);
                        break;
    

    重新创建全局事务:

    tx = GlobalTransactionContext.getCurrentOrCreate();
    
    status: help-wanted 
    opened by Maestroqiua 28
  • bugfix: fix the inconsistent configuration item names related to LoadBalance

    bugfix: fix the inconsistent configuration item names related to LoadBalance

    • [ ] I have registered the PR changes.

    Ⅰ. Describe what this PR did

    fix the inconsistent configuration item names related to LoadBalance

    Ⅱ. Does this pull request fix one issue?

    fixes #5230

    Ⅲ. Why don't you add test cases (unit test/integration test)?

    I've provided one.

    Ⅳ. Describe how to verify it

    Ⅴ. Special notes for reviews

    opened by xingfudeshi 1
  • FailureHandler重写无法实现回滚失败处理

    FailureHandler重写无法实现回滚失败处理

    • [ ] I have searched the issues of this repository and believe that this is not a duplicate.

    Ⅰ. Issue Description

    单机模拟镜像不一致导致回滚失败处理问题。TM端捕获的异常是feign远程调用出的错(不过不就是分支事务处理失败所以触发回滚吗),导致捕获的异常状态始终是 RollbackDone就结束了,不会走自实现的FailureHandler。此外好奇的是分支事务的处理不是直接响应给TC吗?

    Ⅱ. Describe what happened

    If there is an exception, please attach the exception trace:

    Just paste your stack trace here!
    

    Ⅲ. Describe what you expected to happen

    Ⅳ. How to reproduce it (as minimally and precisely as possible)

    1. xxx
    2. xxx
    3. xxx

    Ⅴ. Anything else we need to know?

    Ⅵ. Environment:

    • JDK version : 11
    • Seata version: 1.6.0
    • OS : Win10
    • Others:
    status: help-wanted 
    opened by Ahang-cloud 16
  • inconsistent configuration item names

    inconsistent configuration item names

    • [ ] I have searched the issues of this repository and believe that this is not a duplicate.

    Ⅰ. Issue Description

    配置名 visualNodes 与 LoadBalanceProperties 类里的field virtualNodes 名不一致,导致在 SpringBootConfigurationProvider 下,获取字段时不存在,导致返回配置值为 null。 也就是说在springboot下,配置了seata.client.load-balance.visual-nodes 或 seata.client.load-balance.virtual-nodes都会导致配置读取不到。 image

    Ⅱ. Describe what happened

    If there is an exception, please attach the exception trace:

    Just paste your stack trace here!
    

    Ⅲ. Describe what you expected to happen

    Ⅳ. How to reproduce it (as minimally and precisely as possible)

    1. xxx
    2. xxx
    3. xxx

    Ⅴ. Anything else we need to know?

    Ⅵ. Environment:

    • JDK version :
    • Seata version:
    • OS :
    • Others:
    type: bug 
    opened by xingfudeshi 1
  • not found service provider for : io.seata.rm.datasource.sql.struct.TableMetaCache

    not found service provider for : io.seata.rm.datasource.sql.struct.TableMetaCache

    翻看了很多issues,未找到类似问题

    Ⅰ. Issue Description

    maven依赖 io.seata seata-spring-boot-starter 1.3.0 com.alibaba.cloud spring-cloud-starter-alibaba-seata 2.1.0.RELEASE io.seata seata-spring-boot-starter seata-all io.seata

    报错信息 Caused by: io.seata.common.loader.EnhancedServiceNotFoundException: not found service provider for : io.seata.rm.datasource.sql.struct.TableMetaCache

    Ⅱ. Describe what happened

    服务启动后低概率偶现问题,且一旦出现该问题,只能通过重启服务解决。

    Ⅲ. Describe what you expected to happen

    了解问题原因,并解决该问题

    Ⅳ. How to reproduce it (as minimally and precisely as possible)

    重启服务后执行开启seata事务的db操作,低概率复现

    Ⅴ. Anything else we need to know?

    springboot 2.1.6.RELEASE springcloud Greenwich.SR1

    Ⅵ. Environment:

    • JDK version : 1.8
    • Seata version: 1.3.0
    • OS : linux
    • Others: 无
    opened by yuruixin 5
  • Seata1.6.1,注册中心为eureka,在springboot3.0.0+springcloud2022.0.0,客户端启动报错NoClassDefFoundError: com/netflix/config/ConfigurationManager

    Seata1.6.1,注册中心为eureka,在springboot3.0.0+springcloud2022.0.0,客户端启动报错NoClassDefFoundError: com/netflix/config/ConfigurationManager

    • [x] I have searched the issues of this repository and believe that this is not a duplicate.

    Ⅰ. Issue Description

    Seata1.6.1,注册中心为eureka,在springboot3.0.0+springcloud2022.0.0,客户端启动报错 Error creating bean with name 'globalTransactionScanner' defined in class path resource [io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.class]: com/netflix/config/ConfigurationManager

    因为springcloud2022.0.0的eureka已经剔除了archaius的依赖,ConfigurationManager不存在 image

    Ⅱ. Environment:

    • JDK version : 17
    • Seata version: 1.6.1
    • SpringBoot: 3.0.0
    • SpringCloud: 2022.0.0
    status: help-wanted 
    opened by renlm 0
Releases(v1.6.1)
  • v1.6.1(Dec 22, 2022)

    Seata 1.6.1 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#5115] support for spring-boot:3.x

    bugfix:

    • [#5179] fix ClassNotFoundException when server starts using Eureka

    optimize:

    • [#5120] unify the format of configuration items in yml files
    • [#5180] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static
    • [#5182] fix some security vulnerabilities in GGEditor
    • [#5183] optimize the default values for some switches

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.6.1.tar.gz(89.23 MB)
    seata-server-1.6.1.zip(89.29 MB)
  • v1.6.0(Dec 16, 2022)

    Seata 1.6.0 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#4863] support oracle and postgresql multi primary key
    • [#4649] seata-server support multiple registry
    • [#4779] support Apache Dubbo3
    • [#4479] TCC mode supports tcc annotation marked on both interface and implementation class
    • [#4877] seata client support jdk17
    • [#4914] support mysql update join sql
    • [#4542] support oracle timestamp types
    • [#5111] support Nacos contextPath
    • [#4802] dockerfile support arm64

    bugfix:

    • [#4780] fix can't post TimeoutRollbacked event after a successful timeout rollback
    • [#4954] fix output expression incorrectly throws npe
    • [#4817] fix in high version springboot property not Standard
    • [#4838] fix when use Statement.executeBatch() can not generate undo log
    • [#4533] fix rollback event repeated and some event status not correct
    • [#4912] fix mysql InsertOnDuplicateUpdate column case is different and cannot be matched
    • [#4543] fix support Oracle nclob types
    • [#4915] fix failed to get server recovery properties
    • [#4919] fix XID port and address null:0 before coordinator.init
    • [#4928] fix rpcContext.getClientRMHolderMap NPE
    • [#4953] fix InsertOnDuplicateUpdate bypass modify pk
    • [#4978] fix kryo support circular reference
    • [#4874] fix startup failure by using OpenJDK 11
    • [#5018] fix loader path in startup scripts
    • [#5004] fix duplicate image row for update join
    • [#5032] fix mysql InsertOnDuplicateUpdate sql query error caused by placeholder index calculation error
    • [#5033] fix null exception when sql columns is empty for insert on duplicate
    • [#5038] remove @EnableConfigurationProperties({SagaAsyncThreadPoolProperties.class})
    • [#5050] fix global session is not change to Committed in saga mode
    • [#5052] fix update join condition placeholder param error
    • [#5031] fix mysql InsertOnDuplicateUpdate should not use null index value as image sql query condition
    • [#5075] fix InsertOnDuplicateUpdateExecutor could not intercept the sql which has no primary and unique key
    • [#5093] fix access key loss after seata server restart
    • [#5092] fix when seata and jpa are used together, their AutoConfiguration order is incorrect
    • [#5109] fix NPE caused when there is no @GlobalTransactional annotation on the RM side
    • [#5098] Druid disable oracle implicit cache
    • [#4860] fix metrics tags coverage in the seata-server side
    • [#5028] fix insert value null parsed as string in insert on duplicate SQL
    • [#5078] fix could not intercept the sql witch has no primary and unique key
    • [#5097] fix access key loss after server restart
    • [#5131] fix rollback xa connection active state
    • [#5134] fix hikari datasource auto proxy fail
    • [#5163] fix bad service configuration file and compilation failure

    optimize:

    • [#4774] optimize mysql8 dependencies for seataio/seata-server image
    • [#4790] Add a github action to publish Seata to OSSRH
    • [#4765] mysql 8.0.29 not should be hold for connection
    • [#4750] optimize unBranchLock romove xid
    • [#4797] optimize the github actions
    • [#4800] Add NOTICE as Apache License V2
    • [#4681] optimize the check lock during global transaction
    • [#4761] use hget replace hmget because only one field
    • [#4414] exclude log4j dependencies
    • [#4836] optimize BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) method more readable
    • [#4865] fix some security vulnerabilities in GGEditor
    • [#4590] auto degrade enable to dynamic configure
    • [#4490] tccfence log table delete by index
    • [#4911] add license checker workflow
    • [#4917] upgrade package-lock.json fix vulnerabilities
    • [#4924] optimize pom dependencies
    • [#4932] extract the default values for some properties
    • [#4925] optimize java doc warning
    • [#4921] fix some vulnerabilities in console and upgrade skywalking-eyes
    • [#4936] optimize read of storage configuration
    • [#4946] pass the sqlexception to client when get lock
    • [#4962] optimize build and fix the base image
    • [#4974] optimize cancel the limit on the number of globalStatus queries in Redis mode
    • [#4981] optimize tcc fence record not exists errMessage
    • [#4985] fix undo_log id repeat
    • [#4995] fix mysql InsertOnDuplicateUpdate duplicate pk condition in after image query sql
    • [#5047] remove useless code
    • [#5051] undo log dirty throw BranchRollbackFailed_Unretriable
    • [#5075] intercept the InsertOnDuplicateUpdate statement which has no primary key and unique index value
    • [#5104] remove the druid dependency in ConnectionProxy
    • [#5124] support oracle on delete tccfence logs
    • [#4468] support kryo 5.3.0
    • [#4807] optimize docker image and oss publish
    • [#4445] optimize transaction timeout judgment
    • [#4958] do not execute triggerAfterCommit() if timeout
    • [#4582] redis mode support sorted set by timeout
    • [#4963] add ARM64 CI workflow
    • [#4434] remove seata-server's CMS parameters

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.6.0.tar.gz(88.34 MB)
    seata-server-1.6.0.zip(88.40 MB)
  • v1.5.2(Jul 12, 2022)

    Seata 1.5.2 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#4661] support xid consistency load balance
    • [#4676] support server to expose Nacos services by mounting SLB
    • [#4642] support batch message parallel processing
    • [#4567] support where method condition(find_in_set)

    bugfix:

    • [#4515] fix the error of SeataTCCFenceAutoConfiguration when database unused
    • [#4661] fix sql exception with PostgreSQL in module console
    • [#4667] fix the exception in RedisTransactionStoreManager for update map During iteration
    • [#4678] fix the error of key transport.enableRmClientBatchSendRequest cache penetration if not configure
    • [#4701] fix missing command line args
    • [#4607] fix bug on skipping lock check
    • [#4696] fix oracle database insert value
    • [#4726] fix batch message send may return NullPointException
    • [#4729] fix set AspectTransactional.rollbackForClassName with wrong value
    • [#4653] fix the sql exception when pk is non-numeric in INSERT_ON_DUPLICATE SQL

    optimize:

    • [#4650] fix some security vulnerabilities
    • [#4670] optimize the thread pool size of branchResultMessageExecutor
    • [#4662] optimize rollback transaction metrics
    • [#4693] optimize the console navigation bar
    • [#4700] fix maven-compiler-plugin and maven-resources-plugin execute failed
    • [#4711] separate lib dependencies for deployments
    • [#4720] optimize pom description
    • [#4728] upgrade logback dependency to 1.2.9
    • [#4745] support mysql8 in release package
    • [#4626] Replace flatten-maven-plugin with easyj-maven-plugin to fix the conflict between shade and flatten
    • [#4629] check relation of before status and after status when updating global session
    • [#4662] make EnhancedServiceLoader more readable

    test:

    • [#4544] optimize jackson dependencies in TransactionContextFilterTest
    • [#4731] fix UT failed in AsyncWorkerTest and LockManagerTest

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.5.2.tar.gz(85.63 MB)
    seata-server-1.5.2.zip(85.69 MB)
  • v1.5.1(May 17, 2022)

    Seata 1.5.1(release fixes for 1.5.0) Released.

    seata-all-1.5.0.jar was released to the central maven repository with version number replacement issues due to plugin conflicts in 1.5.0. As a result, we urgently released version 1.5.1 with code functionality remaining exactly the same as 1.5.0. We are sorry for the confusion and inconvenience.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#4115] support console management
    • [#3472] add redisLocker's lua mode
    • [#3575] support the mixed use of different storages of locks and sessions
    • [#3374] add a Executor for INSERT ON DUPLICATE KEY UPDATE
    • [#3642] provide an api to share tcc phase-1's params to phase-2
    • [#3064] support configuring the order of the TM and TCC interceptor
    • [#2852] support configuring scan target for GlobalTransactionScanner
    • [#3683] support redis distributed lock to prevent multi TC competition
    • [#3545] TCC mode support idempotent and anti hanging
    • [#3009] support server start with springboot and config with application.yaml
    • [#3652] support APM with SkyWalking
    • [#3823] TCC mode supports customized parameters list of the method in phase two
    • [#3642] TCC mode's try method supports passing BusinessActionContext implicitly
    • [#3856] support edas-hsf RPC framework
    • [#3880] contributing md support chinese.
    • [#2568] support GlobalTransactionInterceptor expression
    • [#3886] support the registry center network preferences
    • [#3869] support get configuration from environment
    • [#3906] support SPI unload
    • [#3668] support kotlin coroutine
    • [#3968] support brpc-java RPC framework
    • [#4134] init the console basic code
    • [#4268] query global session in the file mode
    • [#4281] query global session and global lock in the redis mode
    • [#4293] get global lock in the file mode
    • [#4335] Realize configuration center upload configuration interactive script (nacos,etcd3)
    • [#4360] Realize configuration center upload configuration interactive script (apollo,consul,zk)
    • [#4320] realize the interface of console: get global session and global lock in the db mode
    • [#4435] console front-end page implementation
    • [#4480] implementation of DefaultAuthSigner
    • [#3870] make seata-bom be the real Bill-Of-Material
    • [#3487] add db realization for distribute lock
    • [#3889] registry add heartbeat
    • [#3951] support zstd compressor
    • [#2838] Saga support auto configuration in the spring boot project

    bugfix:

    • [#3497] fix tcc phase two response timeout exception
    • [#3686] fix NPE and wrong cluster name of Apollo
    • [#3702] fix some comments
    • [#3716] fix the problem in the findTargetClass method
    • [#3717] fix typo of interval
    • [#3773] fix consul not found tc cluster
    • [#3695] fix mariadb unable to create XA connection
    • [#3783] fix the problem that store mode does not take effect
    • [#3740] fix that LocalThread is not cleared when the Saga transaction ends
    • [#3792] fix the Server can't find redis-host property
    • [#3828] fix StringUtils StackOverflowError
    • [#3817] fix TC SkyWalking topo calling node not gather
    • [#3803] fix ReflectionUtil throw unexpected exception
    • [#3879] fix postgresql multi schema throw not found channel exception
    • [#3881] fix getConfig with different default value return the first
    • [#3897] fix LocalDataTime type in FastjsonUndoLogParser can't be rollback
    • [#3901] fix seataio/seata-server servlet-api conflict
    • [#3931] fix the wrong path and filename when dump the jvm memory for analysis
    • [#3978] fix NPE cause by future timeout
    • [#4266] fix register branch and release lock failed when the size of rows that modified is greater than 1000 in oracle
    • [#3949] fix the problem that nacos-config.py will not skip blank options. fix bug that split options may cause content loss
    • [#3988] fix the problem that nacos not found user when password has special characters
    • [#3998] fix the NPE of jedis multi.exec
    • [#4011] fix can not get properties of distributed-lock-table in springboot
    • [#4025] fix potential database resource leak
    • [#4023] fix the problem that the xid is not cleared in some scenes of dubbo
    • [#4039] fix RM did not clear XID after the local transaction threw an exception
    • [#4032] fix ApplicationContext already closed problem when Seata server using ShutdownHook to destroy
    • [#4074] fix prevents XA mode resource suspension
    • [#4107] fix deadlock problems during project construction
    • [#4158] fix the logback can't load the RPC_PORT
    • [#4162] fix correct built-in properties for redis registry
    • [#4165] fix StringUtils.toString(obj) throw ClassCastException when the obj is primitive data array
    • [#4169] fix xa mode originalConnection has been closed, cause PhaseTwo fail to execute
    • [#4177] fix the problem of accidentally releasing the global lock
    • [#4174] fix delete undo log connection already closed
    • [#4189] fix the kafka-appender.xml and logstash-appender.xml
    • [#4213] fix code for "sessionMode" not execute problem
    • [#4220] fix some problems with zstd compressor and add the version of the kotlin-maven-plugin
    • [#4222] fix could not rollback when insert field list is empty
    • [#4253] update executor store the actually modified columns but not only the columns in set condition
    • [#4276] fix seata-test module UT not work
    • [#4278] fix the problem that mysql's Blob/Clob/NClob data type cannot be deserialized
    • [#4302] fix the problem that other ORMs may not be able to obtain the auto-incrementing primary key value
    • [#4233] fix data remanence problems in lock and branch under specific circumstances.
    • [#4308] fix the TableMetaCache parsing problem with the same table under multiple Postgresql schemas
    • [#4326] fix inability to build Executor when using mariadb driver
    • [#4355] fix mysql-loadbalance resource id error
    • [#4310] fix the problem that failed to obtain the self increment ID of MySQL database through "select last_insert_id"
    • [#4331] fix dirty write check exception that may occur when using ONLY_CARE_UPDATE_COLUMNS configuration
    • [#4228] fix resource suspension in xa mode caused by choose other ip as channel alternative
    • [#4408] fix the invalid environment variable in container env
    • [#4441] fix the problem that pipelined resources are not closed in redis mode and add branchSession judge branchSessions is not null
    • [#4438] fix the problem that GlobalSession could not be deleted normally in the case of delayed deletion in the file mode of the develop branch
    • [#4432] fix the inability to get some remote configurations
    • [#4452] fix the change log of 'service.disableGlobalTransaction' config
    • [#4449] fix redis mode page npe and optimize get globalSession on average
    • [#4459] fix the failure to obtain before image and after image on oracle and pgsql of the develop branch
    • [#4471] in branch 'develop', fix the error when service.vgroupMapping change
    • [#4474] fix Mysql multi-bit Bit type field rollback error
    • [#4492] fix the failure to update cluster list dynamically when use eureka of the develop branch
    • [#4535] fix FileSessionManagerTest fail
    • [#4561] fix allSessions/findGlobalSessions may return null and cause npe
    • [#4505] fix fastjson serialization of time data types
    • [#4579] fix prepareUndoLogAll of MySQLInsertOrUpdateExecutor
    • [#4005] fix PK constraint name isn't the same as the unique index name which is belong to PK
    • [#4062] fix saga complex parameter deserialization problem
    • [#4199] fix rpc tm request timeout
    • [#4352] fix some problem of the sql parser
    • [#4487] fix remove Pagination hideOnlyOnePage attribute
    • [#4449] fix optimize redis limit and fix redis page bug
    • [#4608] fix test case
    • [#3110] fix the problem of unit test

    optimize:

    • [#4163] improve CONTRIBUTING docs
    • [#3678] supplement missing configuration and new version documents
    • [#3654] fix typo,applicationContex -> applicationContext
    • [#3615] asynchronous deletion after the transaction is committed
    • [#3687] fix the case that could not retry acquire global lock
    • [#3689] modify the attribute prefix in the file file.properties
    • [#3528] optimize the memory footprint of redis mode
    • [#3700] optimize the speed of buildLockKey
    • [#3588] optimize the logic of datasource auto proxy
    • [#3626] remove repeat change status
    • [#3722] add the basic code of distributed lock
    • [#3713] unified the default value of enableClientBatchSendRequest
    • [#3120] optimize Configuration and add unit tests
    • [#3735] do not load LoadBalance if not necessary
    • [#3770] close the Closeable and optimize some code
    • [#3627] use TreeMap instead of the LinkedHashMap in TableMeta to compatible high level MySQL
    • [#3760] opt the logback's config of seata-server
    • [#3765] Transfer the operation of adding configuration class from 'AutoConfiguration' to 'EnvironmentPostProcessor'
    • [#3730] Refactoring the code of TCC mode
    • [#3820] add column action_name to the tcc_fence_log
    • [#3738] JacksonUndoLogParser supports to parsing LocalDateTime
    • [#3794] optimize the packaging of seata-server
    • [#3795] optimize zk registry lookup performance
    • [#3840] optimiza apm-skwalking operation method to generate rules
    • [#3834] optimize seata-distribution add apm-seata-skywalking
    • [#3847] optimize ConcurrentHashMap.newKeySet replace ConcurrentSet
    • [#3311] supports reading all configurations from a single Consul key
    • [#3849] optimize string concat
    • [#3890] optimize only the inserted fields are checked
    • [#3895] optimize decode exception
    • [#3898] add jib-maven-plugin
    • [#3904] ehance metrics and fix seata-server UT not work
    • [#3212] optimize recognize sql in limit and order by
    • [#3905] optimize nacos-config.sh to support ash
    • [#3935] optimize Send redis command at one time using pipeline
    • [#3916] optimize determine whether the server in the register is alive
    • [#3918] cache reflection results of the fields and methods
    • [#3898] add jib-maven-plugin
    • [#3907] optimize set server port
    • [#3912] support config JVM param in env
    • [#3939] use map instead of if else judge for more change in the future
    • [#3955] add a start banner for seata
    • [#3954] replace @Deprecated getOwnernName to getOwnerName in druid
    • [#3981] optimize service port priority
    • [#4013] optimize channel alive check
    • [#3982] optimize readme doc and upgrade some dependencies
    • [#3949] nacos-config.py support default parameters and optional input parameters
    • [#3991] disable listening in the FileConfiguration center in Springboot
    • [#3994] Optimize the mechanism of periodically deleting tasks in the tcc_fence_log table
    • [#3327] supports reading all configurations from a single Etcd3 key
    • [#4001] support to read YML configuration from Nacos, Zookeeper, Consul, Etcd3
    • [#4017] optimize file configuration
    • [#4018] optimize Apollo configuration
    • [#4021] optimize Nacos、Consul、Zookeeper、Etcd3 configuration
    • [#4034] optimize Nacos, Consul, Zookeeper and Etcd3 configuration Junit test Class
    • [#4055] optimize NetUtil#getLocalAddress0
    • [#4086] optimize lazily load branch transactions and task scheduling
    • [#4056] optimize the DurationUtil
    • [#4103] optimize AbstractLockManager#collectRowLocks logic
    • [#3733] optimize acquire lock logic
    • [#4144] support default configuration of tx-service-group
    • [#4157] optimize client batch sending.
    • [#4191] support rpc timeout can be customized.
    • [#4216] no more attempt to clean undolog for none AT mode
    • [#4176] use expire key instead hash when using redis as registry center.
    • [#4196] tc batch response to client.
    • [#4212] optimize the interface of the console
    • [#4237] skip check lock when all the before image is empty
    • [#4251] optimize partial code handling
    • [#4262] optimize tcc module code handling
    • [#4235] optimize instance saved in eureka
    • [#4277] optimize acquire lock return fail-fast code in redis-pipeline mode.
    • [#4284] support authentication of MSE-Nacos with ak/sk
    • [#4299] optimize exceptions to make them friendly
    • [#4300] optimize let DefaultCoordinator invoke NettyRemotingServer's close method,no longer closed by ServerRunner
    • [#4270] improve the performance of global commit and global rollback, asynchronous branch transaction cleanup
    • [#4307] when in TCC mode there is no need to delete global locks
    • [#4303] tcc_fence_log table hanging log records are deleted asynchronously
    • [#4328] upload configuration script support comments
    • [#4305] optimize acquire global lock fail error log print on tc
    • [#4336] add SQL exception prompt not supported by AT mode
    • [#4359] support configuration metadata read from environment variables
    • [#4247] add tests for java17 and springboot in the github/actions
    • [#4353] Slimming down for the seata-all.jar
    • [#4393] skip reload for redis & db mode
    • [#4400] asynchronous tasks handle global transactions in parallel
    • [#4391] commit/rollback retry timeout event
    • [#4409] add copyright header to test classes
    • [#4282] optimize build UndoItem logic
    • [#4407] file mode does not require lazy processing of sessions
    • [#4436] optimize global session query in file mode
    • [#4431] limit the number of queries in Redis storage mode
    • [#4465] optimize client version transfer in tc batch response to client mode.
    • [#4469] optimize the way to get configuration in DB mode of console
    • [#4478] optimize Nacos config and naming properties
    • [#4522] optimize GC parameters in JVM
    • [#4517] enhance fail/timeout status metric and log level
    • [#4451] filesessionmanager changed to singleton and optimized task thread pool processing
    • [#4551] optimize metrics rt statistics
    • [#4574] support accessKey/secretKey auto configuration
    • [#4583] use HmacSHA256 instead of HmacSHA1 for ram signature
    • [#4591] optimize the default value of the switch
    • [#3780] optimize upgrade the Druid version
    • [#3797] optimize support instance BusinessActionContext outside the TCC try method
    • [#3909] optimize collectRowLocks method
    • [#3763] optimize github actions
    • [#4345] optimize fix the path of the package
    • [#4346] optimize the log of the server and remove lombok
    • [#4348] optimize Unified management the versions of maven-plugin
    • [#4354] optimize the tests of SAGA
    • [#4227] optimize the versions of the dependencies
    • [#4403] optimize disable SAGA tests
    • [#4453] optimize upgrade eureka-clients and xstream dependencies
    • [#4481] optimize nacos config and naming properties
    • [#4477] optimize debug log and fix typo
    • [#4484]optimize the log of TM/RM register
    • [#3874] optimize Add logo of registered enterprise,and Change image source to Alicdn
    • [#4458] optimize fix the README.md of metrices module
    • [#4482] optimize remove duplicated word

    test:

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.5.1.tar.gz(82.92 MB)
    seata-server-1.5.1.zip(82.93 MB)
  • v1.4.2(Apr 25, 2021)

    Seata 1.4.2 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#2933] add antlr for mysql sqlparser
    • [#3228] support custom serialization plugin
    • [#3172] support undo_log compression mode in AT
    • [#3372] Saga support customize whether update last retry log
    • [#3411] support seata-server thread pool parameters configuration
    • [#3348] support redis sentinel storage mode in TC
    • [#2667] support password decryption when using db and redis storage mode
    • [#3427] add distributed lock interface
    • [#3443] support send the seata-server log to logstash or kafka
    • [#3486] add transaction service group for metric
    • [#3317] support to obtain multiple configurations through a single node when using zookeeper as configuration center
    • [#3516] support acl-token when consul is used registry and configuration center
    • [#3116] support configuring apollo configService and cluster
    • [#3468] saga support loop execution on state
    • [#3447] support Transaction context printing in logging framework

    bugfix:

    • [#3258] fix AsyncWorker potential OOM problem
    • [#3293] fix configuration cache get value type mismatch exception
    • [#3241] forbidden use order by or limit in multi sql
    • [#3406] fix the value can not be push to nacos when special charset in config.txt
    • [#3418] fix getGeneratedKeys may get history pk
    • [#3408] fix the NPE problem of jar running mode when the third-dependency on separate packaging
    • [#3431] fix property bean may not be initialized when reading configuration
    • [#3413] fix the logic of rollback to savepoint and release to savepoint
    • [#3367] when the xa branch is rollback, it cannot be executed due to idle state
    • [#3448] reduce unnecessary competition and remove missing locks
    • [#3451] fix set auto-commit to true when local transactions are not being used. Failure to compete for a lock causes the global transaction to exit, invaliding the global row lock and dirty writing of the data.
    • [#3481] fix seata node refresh failure because of consul client throws exceptions
    • [#3491] fix typo in README.md
    • [#3531] fix the NPE of RedisTransactionStoreManager when get branch transactions
    • [#3500] fix oracle and postgreSQL can't query column info
    • [#3560] fix the problem that the asynchronous task of the transactions in the committing state has no time threshold and cannot recover the transaction
    • [#3555] do not call setBlob to invalid the jdbc exception
    • [#3540] fix server distribution missing files
    • [#3597] fix the possible NPE
    • [#3568] fix automatic datasource agent caused by ConcurrentHashMap.computeIfAbsent Deadlock problem
    • [#3402] fix the problem that the updated column cannot be resolved because the field name in the updated SQL contains the database name
    • [#3464] fix test case NPE and StackTraceLogger's log.
    • [#3522] fix register branch and store undolog when AT branch does not need compete lock
    • [#3635] fix pushing notification failed when the configuration changed in zookeeper
    • [#3133] fix the case that could not retry acquire global lock
    • [#3156] optimize the logic of SpringProxyUtils.findTargetClass

    optimize:

    • [#3341] optimize the format of the path to the specified configuration file
    • [#3385] optimize github action and fix unit test failure
    • [#3175] improve UUIDGenerator using "history time" version of snowflake algorithm
    • [#3291] mysql jdbc connect param
    • [#3336] support using System.getProperty to get netty config property
    • [#3369] add github action secrets env for dockerHub
    • [#3343] Migrate CI provider from Travis CI to Github Actions
    • [#3397] add the change records folder
    • [#3303] supports reading all configurations from a single Nacos dataId
    • [#3380] globalTransactionScanner listener optimize
    • [#3123] optimize the packing strategy of seata-server
    • [#3415] optimize maven clean plugin to clear the distribution directory
    • [#3316] optimize the property bean may not be initialized while reading config value
    • [#3420] optimize enumerated classes and add unit tests
    • [#3533] added interface to get current transaction role
    • [#3436] optimize typo in SQLType class
    • [#3439] adjust the order of springApplicationContextProvider so that it can be called before the XML bean
    • [#3248] optimize the config of load-balance migration to belong the client node
    • [#3441] optimize the auto-configuration processing of starter
    • [#3466] String comparison uses equalsIgnoreCase()
    • [#3476] support when the server parameter passed is hostname, it will be automatically converted to IP
    • [#3236] optimize the conditions for executing unlocking
    • [#3485] optimize useless codes in ConfigurationFactory
    • [#3505] optimize useless if judgments in the GlobalTransactionScanner class
    • [#3544] optimize the get pks by auto when auto generated keys is false
    • [#3549] unified the length of xid in different tables when using DB storage mode
    • [#3551] make RETRY_DEAD_THRESHOLD bigger and configurable
    • [#3589] Changed exception check by JUnit API usage
    • [#3601] make LoadBalanceProperties compatible with spring-boot:2.x and above
    • [#3513] Saga SpringBeanService invoker support switch json parser
    • [#3318] make CLIENT_TABLE_META_CHECKER_INTERVAL configurable
    • [#3371] add applicationId for metric
    • [#3459] remove duplicate validAddress code
    • [#3215] opt the reload during startup in file mode
    • [#3631] optimize nacos-config.py parameter
    • [#3638] optimize the error when use update or delete with join in sql
    • [#3523] optimize release savepoint when use oracle
    • [#3458] reversion the deleted md
    • [#3574] repair Spelling errors in comments in EventBus.java files
    • [#3573] fix designer directory path in README.md
    • [#3662] update gpg key
    • [#3664] optimize some javadocs
    • [#3637] register the participating companies and pull request information

    test

    • [#3381] test case for tmClient
    • [#3607] fixed bugs in EventBus unit tests
    • [#3579] add test case for StringFormatUtils
    • [#3365] optimize ParameterParserTest test case failed
    • [#3359] remove unused test case
    • [#3578] fix UnfinishedStubbing Exception in unit test case
    • [#3383] optimize StatementProxyTest unit test

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.4.2.tar.gz(44.67 MB)
    seata-server-1.4.2.zip(44.69 MB)
  • v1.4.1(Feb 8, 2021)

    Seata 1.4.1 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#3238] add deflater support for seata compressor

    bugfix:

    • [#2879] fix deadlock during springboot project startup
    • [#3296] when mixed use of AT and TCC, AT branchs is not deleted
    • [#3254] clear the listener map of zk registry
    • [#3309] Saga statemachine definition json cannot enable jackson parser, and when no choice matched in choice state will throw NPE
    • [#3287] throw exception when update pk
    • [#3323] clean root context when state machine inst record failed
    • [#3281] fix wrong status when exception
    • [#2949] fix throw NPE when get the state list
    • [#3351] fix throw IllegalArgumentException when use hystrix when using SCA 2.2.3.RELEASE and below
    • [#3349] the problem test case
    • [#3325] fix retry commit unsuccess when record subMachineInst failed
    • [#3357] fix deploy staging rule check failed

    optimize:

    • [#3188] Local variable 'map' is redundant and check queue offer return value
    • [#3247] change client.log.exceptionRate to log.exceptionRate
    • [#3260] use PriorityQueue to simply ShutdownHook
    • [#3319] delete unnecessary @Sharable
    • [#3313] replace StringBuffer to StringBuilder
    • [#3335] modify TransactionPropagationInterceptor name
    • [#3310] enable NamedThreadFactory to get ThreadGroup from the SecurityManager or Current thread
    • [#3320] load balance strategy use constants
    • [#3345] adjust GlobalLockTemplateTest

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.4.1.tar.gz(40.71 MB)
    seata-server-1.4.1.zip(40.72 MB)
  • v1.4.0(Nov 2, 2020)

    Seata 1.4.0 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#2380] support yml configuration
    • [#3191] support jdbc type nclob
    • [#2676] support least active load balance
    • [#3198] spring boot support for custom config and registry type
    • [#2806] support configuring default global transaction timeoutMillis
    • [#2941] add apollo secret key configuration
    • [#2080] support ConsistentHashLoadBalance
    • [#2950] support the reentrant lock in redis module
    • [#2913] The data source proxy mode can be selected as AT or XA
    • [#2856] support for undoLog using Fst serialization
    • [#3076] check lock in TC when use @GlobalLock
    • [#2825] support send authentication msg
    • [#2962] @GlobalTransactional and @GlobalLock can support customize lock retry config

    bugfix:

    • [#3214] fix the 'RootContext.DEFAULT_BRANCH_TYPE' is wrong in some cases
    • [#3129] forbidding execute SQL which update pk value
    • [#3205] fix can not get boolean value in configuration
    • [#3170] the disposables tree set won't accept another Disposable with the same priority
    • [#3180] serializer fst package name error
    • [#3178] remove next line to space
    • [#2929] fix the application was configured to degrade at startup and can't be dynamically switch to upgraded
    • [#3050] fix fetch before images when delete and update statements
    • [#2935] fix saga designer bug that the property box does not switch when switching nodes
    • [#3140] fix Propagation.REQUIRES_NEW and add some comments
    • [#3130] fix some problems in the automatic data source proxy
    • [#3148] the redis lock key and the session key has conflict
    • [#3136] fix the redis pipeline
    • [#2551] Saga can't be used when the dataSource is AT's dataSourceProxy
    • [#3073] do not proxy connections without an xid
    • [#3074] There is no need to retry if the XA schema cannot find the XID
    • [#3097] fix HttpAutoConfiguration always instantiation in springboot env
    • [#3071] part of the connection is not unpacked
    • [#3056] fixed a bug that after branch deletion, there are still remaining branch lock
    • [#3025] fix the wrong package path
    • [#3031] redis locker delete lock incomplete
    • [#2973] fix oracle database in field size over 1000
    • [#2986] fix checkstyle plugin can't exclude single file
    • [#2910] fix error registry type comment
    • [#2914] fix branchType not cleaned when consumer is in TCC mode
    • [#2926] fastjson write undo log not parser
    • [#2897] fix jedis unlock fail
    • [#2918] fix the isolation problem when rollback in AT mode
    • [#2972] UUIDGenerator generates duplicated id
    • [#2932] nacos-config.py script could not run with namespace
    • [#2900] ColumnUtils add escape with scheme
    • [#2904] fix getConfig cache value is 'null'
    • [#2890] fix misspelling in statelang examples
    • [#3040] fix repeated commit when autocommit is false
    • [#3230] fix use @EnableAutoDataSourceProxy startup failed
    • [#2979] columns of resultset integrated with sharingjdbc need to be lowercase
    • [#3233] fix Collections NPE
    • [#3242] fix batch sql getTableMeta error
    • [#3246] fix the exception when limit condition contains VariantRefExpr

    optimize:

    • [#3062] refactor the redis session store
    • [#3201] optimize the wrong stack not fully display
    • [#3117] make log more clearly and remove the useless code
    • [#3134] optimize codes related to Map and List
    • [#3195] optimize XID related codes
    • [#3200] optimize rpc message when message was substring
    • [#3186] remove duplicated in string utils
    • [#3162] remove repeated conditional tests
    • [#2969] upgrade to druid 1.1.23
    • [#3141] upgrade nacos and FastJSON dependencies
    • [#3118] add more configuration tips in additional-spring-configuration-metadata.json
    • [#2597] judging xid status to avoid repeated processing
    • [#3102] optimize ContextCore, can be set 'Object' value
    • [#3016] refactor the redis lock string to hash
    • [#3046] remove unused code in serializer factory
    • [#3053] jedis pool adds maxtotal configuration
    • [#3012] remove set port repeatedly
    • [#2978] optimize globalCommit for mixed use of AT and TCC
    • [#2967] replace with lambda
    • [#2968] ensure that the register message is sent after RM client initialization
    • [#2945] optimize async commit and reduce one update
    • [#2952] optimize additional-spring-configuration-metadata.json
    • [#2920] optimize some grammatical errors
    • [#2906] added some configuration items to keep consistent with official documents
    • [#3222] optimize fileListener to decrease cpu time usage
    • [#2843] removed Reloadable from the redis/db SessionManager
    • [#3209] add using company logos

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.4.0.tar.gz(40.71 MB)
    seata-server-1.4.0.zip(40.72 MB)
  • v1.3.0(Jul 15, 2020)

    Seata 1.3.0 Released.

    Seata is an easy-to-use, high-performance, open source distributed transaction solution.

    The version is updated as follows:

    feature:

    • [#2398] support multi pk for MySQL
    • [#2484] store mode support redis
    • [#2817] Saga StateMachine engine and Designer support Groovy Script Task
    • [#2646] server support for HikariCP
    • [#2253] support for dynamic upgrade and downgrade
    • [#2565] support for transaction annotations on classes
    • [#2510] support LZ4 compressor
    • [#2622] support version valid check
    • [#2658] dataSources support different permissions of Oracle users
    • [#2620] support group configuration in Nacos registry
    • [#2699] compatible with ACM
    • [#2509] support for undo full data columns on update operate
    • [#2584] StateHandlerInterceptor and StateRouterInterceptor support SPI
    • [#2808] server check auth support SPI
    • [#2616] TCC adapter for Dubbo And Sofa reference annotation
    • [#2831] Saga support jackson json parser
    • [#2554] support zk serializer
    • [#2708] support jdbc type array, datalink etc
    • [#2412] xid generation strategy support snowflake
    • [#2611] support the cache of configuration values

    bugfix:

    • [#2893] fix get table meta failed in postgresql
    • [#2887] fix rm client receive response logic
    • [#2610] nacos-script adapt to Nacos 1.2 on permission control
    • [#2588] fix when the check_style does not pass, no detail information output
    • [#2543] fix ApplicationKeeper ShutdownHook signal invalid.
    • [#2598] fix unable to register Nacos
    • [#2618] fix could not create folder in zookeeper
    • [#2628] fix get tableName and alias error in mysql delete
    • [#2639] fix Apollo configuration load fail due to camel style
    • [#2629] fix duplicated resource id with different currentSchema in PostgreSQL
    • [#2659] fix mysql insert use select last_insert_id is undo_log id value
    • [#2670] fix dataSource initialize more times
    • [#2617] fix incorrect getAnnotation about class and method
    • [#2603] fix can't get generated keys value.
    • [#2725] fix other expression before insert row primary key.
    • [#2698] fix nested GlobalLock unbind prematurely
    • [#2755] fix not return value when branchCommit and branchRollback throw exception
    • [#2777] fix can't rollback when set rollback retry count was zero.
    • [#2812] fix get PostgreSQL tableMeta error when using shardingSphere
    • [#2760] fix TM rollback fail throw the seata exception, rollback retrying throw NPE
    • [#2837] fix wrong constant used in the saga SubStateMachineHandler
    • [#2839] fix business exception is lost when compensation succeed in saga mode
    • [#2650] fix TCC and Saga branches will also parse SQL in AbstractConnectionProxy
    • [#2850] Fix Saga designer rounded polylines cause page crashes
    • [#2868] fix can't find AsyncEventBus dependency
    • [#2871] fix get tableMeta failed when table name like 'schame'.'table'
    • [#2685] fix oracle insert sql use sysdate error.
    • [#2872] fix missing escape char in the primary key for the undo sql
    • [#2875] fix ColumnUtils delEscape with scheme error

    optimize:

    • [#2573] replace Random with ThreadLocalRandom in RandomLoadBalance
    • [#2540] refactor rpc request method and rpc interface
    • [#2642] optimize unsafe double-checked locking in SofaRegistryServiceImpl
    • [#2561] keep the same logic of get tableMeta
    • [#2591] support the default timeout for zookeeper register
    • [#2601] repackage spring-boot-starter
    • [#2415] distinguish database behavior according to the branch type
    • [#2647] remove the unused variable
    • [#2649] optimize get tableMeta
    • [#2652] consul supports custom port
    • [#2660] modify IdWorker position to make it reasonable
    • [#2625] polish testing code, replace with Mockito.verify
    • [#2666] add using users organization logos
    • [#2680] Change GlobalTransactionalInterceptor to singleton
    • [#2683] optimize TccActionInterceptor log print
    • [#2477] refactoring client request processing logic.
    • [#2280] refactor InsertExecutor
    • [#2044] optimize ColumnUtils.addEscape method performance
    • [#2730] optimize get config type from configuration
    • [#2723] optimize get tableMeta in postgreSql
    • [#2734] change postgreSql driver scope to provide
    • [#2749] optimize logger class misWrite
    • [#2751] copy jdbc driver to image
    • [#2759] optimized the generation rules of thread name factory
    • [#2607] support insert pkValue support check
    • [#2765] optimize the processing logic of XA's RM for unsupported transaction resources.
    • [#2771] disable unstable unit tests
    • [#2779] CollectionUtils.decodeMap method variables ConcurrentHashMap refact to HashMap
    • [#2486] refactor server handle request process logic from client
    • [#2770] TCC two phase method return type supports void
    • [#2788] optimize server log pattern and support for colored log
    • [#2816] optimize create clazz instance
    • [#2787] modify workerId generation method
    • [#2776] optimize paramsPlaceHolder generate by StringUtils.repeat()
    • [#2799] code opt format
    • [#2829] downgrade check unlock and asynchronous
    • [#2842] code opt format about the sqls and typos
    • [#2242] optimize PreparedStatementProxy initialization logic
    • [#2613] fix typo and some coding guidelines

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.3.0.tar.gz(39.93 MB)
    seata-server-1.3.0.zip(39.94 MB)
  • v1.2.0(Apr 21, 2020)

    The version is updated as follows:

    feature:

    • [#2381] support XA transaction mode
    • [#2206] support REQUIRED、REQUIRES_NEW、SUPPORTS and NOT_SUPPORTED transaction propagation
    • [#2112] support batch update and delete with multiple sql
    • [#2275] support hsf on TCC transaction mode
    • [#2108] support zip bzip2 7z compressor
    • [#2328] support for isolated loading of mysql 5.x and 8.x jdbc drivers classes
    • [#2367] add permission configuration support for Nacos 1.2
    • [#2359] support propagation.never, propagation.mandatory and transaction suspend and resume api
    • [#2418] support fst serialization
    • [#2135] support SPI scope
    • [#2370] support failureHandler implement can be read from the container
    • [#2481] support the max wait configuration for db
    • [#2379] support custom service name when registering with Nacos
    • [#2308] add switch to control whether to register branch on Saga transaction mode
    • [#2301] support default expr and nextval for postgresql

    bugfix:

    • [#2575] fix executeBatch can not get targetSql in Statement mode
    • [#2283] fix oracle get tableMeta fail
    • [#2312] fix the judgement of configuration condition
    • [#2309] fix timestamp deserialize lost nano
    • [#2292] fix some configuration not converted to camel style
    • [#2306] fix deprecated maven prerequisites
    • [#2287] fix connection context can't be remove when global lock retry
    • [#2361] fix the error configuration name
    • [#2333] fix wrong exception information when rollback fails due to dirty data
    • [#2390] fix configuration item containing spaces
    • [#2408] fix missing sequence in undo_log table
    • [#2391] fix configuration exceptions lead to increased CPU usage
    • [#2427] fix StringUtils.toString(o) StackOverflowError
    • [#2384] fix StateMachineRepository#getStateMachineById will replace the last version in cache
    • [#2323] fix wrong proxy of datasource bean
    • [#2466] fix memory visibility of active attribute in file mode
    • [#2349] fix insert sql primary key value support check
    • [#2479] fix postgresql schema when not use lowerCase
    • [#2449] fix can't get table structure when startup
    • [#2505] fix bug of session store path value judgment
    • [#2456] fix server encode request error
    • [#2495] fix the NPE and reduce the request when lockkey is null
    • [#2490] fix RpcContext.addResource when resource is null
    • [#2419] fix http testcase run failed
    • [#2535] fix wrong configuration name in config.txt
    • [#2524] registration service configuration missing and inconsistent
    • [#2473] fix flush condition of disk in file mode
    • [#2455] fix child module can't execute copyright and checkstyle inspection

    optimize:

    • [#2409] reduce the db and network request when undoLog or lockKey is empty
    • [#2329] separate the different storage pattern processing logic
    • [#2354] optimize the unsupported listener logic for spring cloud config
    • [#2320] optimize protostuff and kryo serialize timestamp
    • [#2307] optimize transaction context switch logic when switch transaction mode
    • [#2364] optimize generated instances that were not actually used when the class was loaded
    • [#2368] add zk missing configuration
    • [#2351] add get local global status
    • [#2529] optimize druid parameter
    • [#2288] codecov.yml ignore mock test
    • [#2297] remove duplicated dependency
    • [#2336] add using organization logos
    • [#2348] remove redundant configuration
    • [#2362] optimize stackTraceLogger param
    • [#2382] optimize RegistryFactory singleton pattern and RegistryType judgement
    • [#2400] optimize the magic num of date at UUIDGenerator
    • [#2397] fix typo
    • [#2407] inaccurate judgment may be lead to NPE
    • [#2402] optimize the rm and tm register log
    • [#2422] add link of script in document
    • [#2440] optimize contact us and startup log
    • [#2445] optimize the class registration method for kryo and fst
    • [#2372] refactor lock store sql with SPI
    • [#2453] optimize unnecessary server configuration item
    • [#2369] refactor log store sql with SPI
    • [#2526] optimize spring-boot startup log
    • [#2530] remove use connPool
    • [#2489] optimize exceptionHandler's method signature
    • [#2494] reduce the redundant code
    • [#2523] optimize abnormal global transaction's output logs by frequency
    • [#2549] optimize the exception log for ZookeeperConfiguration
    • [#2558] optimize config and server module log
    • [#2464] enhance Saga transaction editor
    • [#2553] add some notes about using scripts

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.2.0.tar.gz(39.42 MB)
    seata-server-1.2.0.zip(39.44 MB)
  • v1.1.0(Feb 20, 2020)

    The version is updated as follows:

    feature:

    • [#2200] support postgresql(client and server)
    • [#1746] integrate with httpClient
    • [#2240] support custom saga transaction recovery strategy on transaction timeout
    • [#1693] support for druid class isolation loading
    • [#2245] zookeeper digest support
    • [#2239] compatibility dubbo 2.7.4+
    • [#2203] support nacos configuration group
    • [#2086] support apollo configuration namespace
    • [#2106] support FastThreadLocalContextCore
    • [#1703] create sql parser SPI and a druid type sql parser
    • [#2151] Saga provide a switch to skip branch report on branch success

    bugfix:

    • [#2270] fix worker size not support enum type and some minor problem
    • [#2258] fix channelHandler not sharable
    • [#2261] fix ApplicationContext has not been refreshed
    • [#2262] fix nacos script set group error
    • [#2249] fix saga statemachine status incorrect on register branch failed
    • [#2126] fix escape characters for column and table names
    • [#2234] fix type error when fastjson deserialize long type
    • [#2237] fix DefaultCoordinatorTest failed in Windows OS
    • [#2233] fix fastjson undo filter tableMeta
    • [#2172] fix configuration center can't read configuration using SpringCloudConfig
    • [#2217] fix wrong property names in seata-spring-boot-starter
    • [#2219] fix the value of disableGlobalTransaction not being read correctly
    • [#2187] fix the wrong rollback sequence caused by the same record request from different transaction branches on different servers
    • [#2175] fix direct buffer OOM
    • [#2210] fix retry expired commit and rollback globalSession can't be removed
    • [#2179] fix type casting problem when using redis as registry
    • [#2192] fix override eureka getHostName() return ipAddress
    • [#2198] fix global lock not released when rollback retry timeout
    • [#2167] fix saga concurrent asynchronous execution with duplicate primary key xid
    • [#2185] fix issue of judgement container in kubernetes
    • [#2145] fix Saga report branch status incorrect when service retried succeed
    • [#2113] fix when branchRollback failed, it will trigger retry of multi-tc

    optimize:

    • [#2255] optimize some default configuration value
    • [#2230] unify the config style and keep defaults consistent
    • [#1935] some about rpc optimize
    • [#2215] optimize handing saga transaction timeout
    • [#2227] separate tc In/Outbound interface
    • [#2033] an optimization about DefaultRemotingParser
    • [#1688] reduce unnecessary dependences in client side
    • [#2134] separate the different transaction pattern processing logic
    • [#2224] optimize ContextCoreLoader code style
    • [#2171] optimize script and add script usage demo
    • [#2208] replace getDbType with LoadLevel name
    • [#2182] optimize configuration item prefix judgment
    • [#2211] optimize RootContext code style
    • [#2140] optimize GzipUtil code style
    • [#2209] refactor seata-discovery more readable
    • [#2055] refactor tableMetaCache and undoLogManager with SPI
    • [#2184] refactor seata-config more readable
    • [#2095] refactor of auto proxying of datasource
    • [#2178] saga statemachine designer add default properties for catch node
    • [#2103] optimize tcc module code style
    • [#2125] change the package path of MySQL recognizer
    • [#2176] fix typos
    • [#2156] refactor sql parser type druid as constant
    • [#2170] enhance test coverage of seata common
    • [#2139] gracefully close resources
    • [#2097] use serializer package name instead of codec
    • [#2159] optimize spring module code style
    • [#2036] optimize Dubbo parser
    • [#2062] optimize seata-rm-datasource module code style
    • [#2146] optimize log specifications
    • [#2038] simplify to make seata-common more readable
    • [#2120] fix typos
    • [#2078] enhance oracle table meta cache code coverage
    • [#2115] fix typos
    • [#2099] optimize tm module code style

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.1.0.tar.gz(33.31 MB)
    seata-server-1.1.0.zip(33.32 MB)
  • v1.0.0(Dec 20, 2019)

    The version is updated as follows:

    feature:

    • [#1966] add single send request for client
    • [#2004] add config center synchronization script
    • [#1997] provides a tool for generating graphics that show the state machine execution path
    • [#1992] support dynamic disable
    • [#1898] support dynamic config
    • [#1983] add hessian codec for rpc serialization
    • [#1960] Provide a visual graph designer for Seata Saga StateMachine based on GGEditor
    • [#1900] Saga state language support "Retry" service when error occurred
    • [#1885] add configuration for build docker image in server module
    • [#1914] support where condition exists for Oracle
    • [#1878] support exists in where condition
    • [#1871] adapt springcloud-alibaba-seata autoconfig
    • [#1844] StateMachine ServiceTask supports asynchronous execution
    • [#1742] add seata-spring-boot-starter
    • [#1460] support gzip compressor
    • [#1492] support gRpc

    bugfix:

    • [#2066] fix thread unsafe which missing double check when initial eureka client
    • [#2059] fix repeated rollback caused by asynchronous rollback thread
    • [#2050] fix if add configListener but dataId not exist, it will throw NPE
    • [#2053] fix when tableName is keyword, the insert operation will get afterImage fail
    • [#2054] fix RetryRollbackingSessionManager lost Rollbacking
    • [#2043] fix startup failure when dynamic proxy is turned on and use druid-spring-boot-starter
    • [#1668] fix sql statement escape symbol
    • [#2029] fix seata-spring-boot-starter does not work
    • [#2037] fix mysql connection unable to release
    • [#2032] fix Etcd3Configuration FILE_CONFIG reference incorrect
    • [#1929] fix duplicated table meta cache key
    • [#1996] fix auto proxying of datasource which has final modifier
    • [#2001] replace deprecated jvm args
    • [#1984] fix presuppose environment variable and replace base image for tool
    • [#1978] fix FileTransactionStoreManagerTest failed on wins OS
    • [#1953] fix get table meta failed with catalog
    • [#1973] fix error of get server port in container
    • [#1905] solve the lock_key length problem
    • [#1927] fix class with private access constructors should not be loaded by SPI.
    • [#1961] fix travis-ci exceeded the maximum log length
    • [#1893] fix saga dose not delete branches when transaction ended
    • [#1932] fix issue of doesn't match environment when build docker image
    • [#1912] fix string.format() method formatting error
    • [#1917] fix NullPointerException in DB mock during CI
    • [#1909] fix xidInterceptorType is null
    • [#1902] fix NPE in UndoExecutorFactory
    • [#1789] fix xid header lowercase
    • [#1889] fix register branch thread hang on tcc mode
    • [#1813] fix TCC does not support cross-service
    • [#1825] fix global status inconsistent when rollback and branch register are concurrent
    • [#1850] fix server restart not recover max sessionId on db mode
    • [#1879] fix jdbc parameter set null
    • [#1874] fix when write the new file throw ClosedChannelException
    • [#1863] fix the other of column type cause rollback fail
    • [#1837] fix saga ExpressionEvaluator not support null value
    • [#1810] fix statemachine def can't store to db and provide query the state logs
    • [#1834] fix StateInstance log can't record output parameters
    • [#1856] fix protostuff undo log get default content
    • [#1845] fix when branchCommit failed,it will trigger retry of multi-tc and throw npe
    • [#1858] fix Global transaction does not work
    • [#1846] fix multi-thread concurrent add listener problem
    • [#1839] fix filter repeated lock
    • [#1768] fix problem when set useInformationSchema true and table name was keyword
    • [#1796] fix unexcepted exception can roll back
    • [#1805] fix connectionproxy prepareStatement not in global transaction
    • [#1780] fix can't use select for update in oracle
    • [#1802] changing HashMap to LinkedHashMap for deterministic iterations
    • [#1793] fix auto proxy for multiple-datasource does not work
    • [#1788] fix mysql can not get primary key value
    • [#1764] fix jdk 11 remoteAddress is null
    • [#1778] fix clean up resources in time to avoid mutual influence between unit tests
    • [#1777] fix DeleteExecutor buildBeforeImageSQL keyword checker by db type

    optimize:

    • [#2068] optimize get database connection
    • [#2056] remove non-javadoc element
    • [#1775] optimize datasource manager branch rollback exception log
    • [#2000] classify script to correspond directory
    • [#2007] enhance test coverage of seata common
    • [#1969] add ops script for Docker-Compose, Kubernetes and Helm
    • [#1967] Add Dockerfile
    • [#2018] optimize about ConfigFuture
    • [#2020] optimize saga log output
    • [#1975] Flatten Saga nested transactions
    • [#1980] show the applicationId when register TM
    • [#1994] rename zk configuration root path.
    • [#1990] add netty config constant keys.
    • [#1979] optimize get select for update recognizer
    • [#1957] load keywordChecker through SPI
    • [#1956] modify no available server error more clearly, and fixed NP
    • [#1958] transform desinger json to statemachine standard json
    • [#1951] add using organization logo
    • [#1950] leak of error trace while handleAsyncCommitting
    • [#1931] nacos-config.py support namespace
    • [#1938] optimize the speed when batch insert or batch update
    • [#1930] reduce HashMap initial size
    • [#1919] force check code style
    • [#1918] optimize assert throw exception
    • [#1911] javadoc should be used for classes, class variables and methods.
    • [#1920] use iterator to remove timeout future.
    • [#1907] encapsulation determines the supported database type
    • [#1903] batch query branchSession by xid list
    • [#1910] all Override methods must be annotated with @override
    • [#1906] add exception system exit code when rpcServer init.
    • [#1897] remove clientTest it's not use
    • [#1883] restructure SQLRecognizer and UndoExecutor
    • [#1890] reformat saga module
    • [#1798] improving method format performance
    • [#1884] optimize auto closeable
    • [#1869] add phase one successful reporting switch
    • [#1842] add some init script
    • [#1838] simplify and groom configuration items
    • [#1866] server lack of error trace
    • [#1867] optimization of seata-spring-boot-starter
    • [#1817] add unit test for seata-tm module
    • [#1823] reduce server rpc with db
    • [#1835] SagaTransactionalTemplate provide reloadTransaction method
    • [#1861] optimize no primary key output log
    • [#1836] change "IsPersist" property value type from String to Boolean
    • [#1824] remove deprecated JVM arguments in Java 11
    • [#1820] adjust check style
    • [#1806] format error log
    • [#1815] update codecov.yml
    • [#1811] adjust codecov configuration
    • [#1799] reduce unnecessary synchronized
    • [#1674] increase rm code coverage by db mock
    • [#1710] add prefix counter for NamedThreadFactory
    • [#1790] format seata server register eureka instance id
    • [#1760] put message to logQueue
    • [#1787] make rpc remoting log easier to read
    • [#1786] simplify code
    • [#1766] remove unused method
    • [#1770] string splice and release lock

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-1.0.0.tar.gz(32.38 MB)
    seata-server-1.0.0.zip(32.40 MB)
  • v0.9.0(Oct 16, 2019)

    The version is updated as follows:

    feature:

    • [#1608] Saga implementation base on state machine
    • [#1625] support custom config and registry type
    • [#1656] support spring cloud config
    • [#1689] support -e startup parameter for specifying the environment name
    • [#1739] support retry when tm commit or rollback failed

    bugfix:

    • [#1605] fix deadlocks that can be caused by object locks and global locks and optimize the granularity of locks
    • [#1685] fix pk too long in lock table on db mode and optimize error log
    • [#1691] fix can't access private member of DruidDataSourceWrapper
    • [#1699] fix use 'in' and 'between' in where condition for Oracle and Mysql
    • [#1713] fix LockManagerTest.concurrentUseAbilityTest assertion condition
    • [#1720] fix can't refresh table meta data for oracle
    • [#1729] fix oracle batch insert error
    • [#1735] clean xid when tm commit or rollback failed
    • [#1749] fix undo support oracle table meta cache
    • [#1751] fix memory lock is not released due to hash conflict
    • [#1761] fix oracle rollback failed when the table has null Blob Clob value
    • [#1759] fix saga service method not support interface type parameter
    • [#1401] fix the first registration resource is null when RM starts

    optimize:

    • [#1701] remove unused imports
    • [#1705] Based on Java5 optimization
    • [#1706] optimize inner class to static class
    • [#1707] default charset use StandardCharsets.UTF_8 instead
    • [#1712] abstract undolog manager class
    • [#1722] simplify to make codes more readable
    • [#1726] format log messages
    • [#1738] add server's jvm parameters
    • [#1743] improve the efficiency of the batch log
    • [#1747] use raw types instead of boxing types
    • [#1750] abstract tableMeta cache class
    • [#1755] enhance test coverage of seata-common module
    • [#1756] security: upgrade jackson to avoid security vulnerabilities
    • [#1657] optimize the problem of large direct buffer when file rolling in file storage mode

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-0.9.0.tar.gz(32.37 MB)
    seata-server-0.9.0.zip(32.38 MB)
  • v0.8.1(Sep 18, 2019)

    The version is updated as follows:

    feature:

    • [#1598] support profile to use absolute path
    • [#1617] support profile’s(registry.conf) name configurable
    • [#1418] support undo_log kryo serializer
    • [#1489] support protobuf maven plugin
    • [#1437] support kryo codec
    • [#1478] support db mock
    • [#1512] extended support for mysql and oracle multiple insert batch syntax
    • [#1496] support auto proxy of DataSource

    bugfix:

    • [#1646] fix selectForUpdate lockQuery exception in file mode
    • [#1572] fix get tablemeta fail in oracle when table name was lower case
    • [#1663] fix get tablemeta fail when table name was keyword
    • [#1666] fix restore connection's autocommit
    • [#1643] fix serialize and deserialize in java.sql.Blob, java.sql.Clob
    • [#1628] fix oracle support ROWNUM query
    • [#1552] fix BufferOverflow when BranchSession size too large
    • [#1609] fix thread unsafe of oracle keyword checker
    • [#1599] fix thread unsafe of mysql keyword checker
    • [#1607] fix NoSuchMethodError when the version of druid used < 1.1.3
    • [#1581] fix missing some length in GlobalSession and FileTransactionStoreManager
    • [#1594] fix nacos's default namespace
    • [#1550] fix calculate BranchSession size missing xidBytes.length
    • [#1558] fix NPE when the rpcMessage's body is null
    • [#1505] fix bind public network address listen failed
    • [#1539] fix nacos namespace setting does not take effect
    • [#1537] fix nacos-config.txt missing store.db.driver-class-name property
    • [#1522] fix ProtocolV1CodecTest testAll may be appears test not pass
    • [#1525] fix when getAfterImage error, trx autocommit
    • [#1518] fix EnhancedServiceLoader may be appears load class error
    • [#1514] fix when lack serialization dependence can't generate undolog and report true
    • [#1445] fix DefaultCoordinatorMetricsTest UT failed
    • [#1481] fix TableMetaCache refresh problem in multiple datasource

    optimize:

    • [#1629] optimize the watcher efficiency of etcd3
    • [#1661] optimize global_table insert transaction_name size
    • [#1633] optimize branch transaction repeated reporting false
    • [#1654] optimize wrong usage of slf4j
    • [#1593] optimize and standardize server log
    • [#1648] optimize transaction_name length when building the table
    • [#1576] eliminate the impact of instructions reordering on session async committing task
    • [#1618] optimize undolog manager and fix delete undolog support oracle
    • [#1469] reduce the number of lock conflict exception
    • [#1619] replace StringBuffer with StringBuilder
    • [#1580] optimize LockKeyConflictException and change register method
    • [#1574] optimize once delete GlobalSession locks for db mode when commit success
    • [#1601] optimize typo
    • [#1602] upgrade fastjson version to 1.2.60 for security issue
    • [#1583] optimize get oracle primary index
    • [#1575] add UT for RegisterTMRequest
    • [#1559] optimize delay to delete the expired undo log
    • [#1547] TableRecords delete jackson annotation
    • [#1542] optimize AbstractSessionManager debug log
    • [#1535] remove H2 and pgsql get primary index code and close resultSet
    • [#1541] code clean
    • [#1544] remove Chinese comment
    • [#1533] refactor of the logics of Multi-configuration Isolation
    • [#1493] add table meta checker switch
    • [#1530] throw Exception when no index in the table
    • [#1444] simplify operation of map
    • [#1497] add seata-all dependencies
    • [#1490] remove unnecessary code

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-0.8.1.tar.gz(32.33 MB)
    seata-server-0.8.1.zip(32.34 MB)
  • v0.8.0(Aug 16, 2019)

    The version is updated as follows:

    feature:

    • [#902] support oracle database in AT mode
    • [#1447] support oracle batch operation
    • [#1392] support undo log table name configurable
    • [#1353] support mysql batch update and batch delete
    • [#1379] support -Dkey=value SysConfig
    • [#1365] support schedule check table mata
    • [#1371] support mysql preparedStatement batch self-increment primary keys
    • [#1337] support mysql batch insert for non-self-inc primary keys
    • [#1453] support delete expired undolog use protobuf codec
    • [#1235] support to delete undolog in back task use seata codec
    • [#1323] support database driver class configuration item

    bugfix:

    • [#1456] fix xid would be duplicate in cluster mode
    • [#1454] fix DateCompareUtils can not compare byte array
    • [#1452] fix select for update retry get dirty value
    • [#1443] fix serialize the type of timestamp lost nano value
    • [#1374] fix store.mode get configuration inconsistent
    • [#1409] fix map.toString() error
    • [#1344] fix ByteBuffer allocates a fixed length, which cause BufferOverflowException
    • [#1419] fix if the connection is autocommit=false will cause fail to delete
    • [#1370] fix begin failed not release channel and throw exception
    • [#1396] fix ClassNotFound problem for Nacos config implementation
    • [#1395] fix check null channel
    • [#1385] fix get SessionManager error when rollback retry timeout
    • [#1378] fix clusterAddressMap did not remove the instance after the instance was offline
    • [#1332] fix nacos script initialization the configuration value contains ’=‘ failed
    • [#1341] fix multiple operations on the same record in the same local transaction, rollback failed
    • [#1339] fix when image is EmptyTableRecords, rollback failed
    • [#1314] fix if don't specify the startup parameters, db mode don't take effect
    • [#1342] fix ByteBuffer allocate len error
    • [#1333] fix netty memory leak
    • [#1338] fix lock is not acquired when multiple branches have cross locks
    • [#1334] fix lock key npe bug, when tcc use protobuf
    • [#1313] fix DefaultFailureHandler check status NPE

    optimize:

    • [#1474] optimize data image compare log
    • [#1446] optimize the server's schedule tasks
    • [#1448] refactor executor class remove the duplicate code
    • [#1408] change ChannelFactory package in TmRpcClientTest
    • [#1432] implement equals and hashcode of the object that is used as the hash key
    • [#1429] remove unused imports
    • [#1426] fix syntax error
    • [#1425] fix typo
    • [#1356] optimize sql join
    • [#1416] optimize some javadoc comments
    • [#1417] optimize oracle keyword
    • [#1404] optimize BranchStatus comments
    • [#1414] optimize mysql keywords
    • [#1407] disable unstable unit tests
    • [#1398] optimize eureka registry serviceUrl with default port
    • [#1364] optimize table columns name defined as constants
    • [#1389] add the oracle support prompt information
    • [#1375] add compareRows failed log
    • [#1358] clean temporary file file runs when UT is finished
    • [#1355] add test case for rpc protocol
    • [#1357] code clean of Consul&Etcd config center implementations
    • [#1345] code clean and modify log level
    • [#1329] add STORE_FILE_DIR default value

    Thanks to these contributors for their code commits. Please report an unintended omission.

    Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.

    Source code(tar.gz)
    Source code(zip)
    seata-server-0.8.0.tar.gz(31.81 MB)
    seata-server-0.8.0.zip(31.79 MB)
  • v0.7.1(Jul 15, 2019)

  • v0.7.0(Jul 12, 2019)

    • [#1276] New RPC protocol
    • [#1266] add enabled configuration for metrics (97)
    • [#1236] support metrics for tc server
    • [#1214] add config shutdown.wait and update version to 0.7.0-SNAPSHOT (1212)
    • [#1206] setting default values using trinomial operators
    • [#1174] add nacos config initialization python script (1172)
    • [#1145] Change LockMode from MEMORY to DB when the StoreMode is DB
    • [#1125] Add protostuff as serializer of UndoLogParser.
    • [#1007] support protobuf feature (97)
    • [#1286] bugfix: add some configuration and exclude log dependency (97)
    • [#1278] bugfix: pass txId into TCC interceptor
    • [#1274] 1. optimization SQL join
    • [#1271] bugfix: @GlobalLock get error with Response (97, 1224)
    • [#1270] bugfix: print error exception
    • [#1269] bugfix: fix TMClinet reconnect exception
    • [#1265] Invoke addBatch of targetStatement if not in global transaction
    • [#1264] configuration:update ignore and coverage (97)
    • [#1263] docs: add doc about contribution (97)
    • [#1262] bugfix: fix find target class issue if scan the web scope bean such a… (97)
    • [#1261] add warn log when fail to get auto-generated keys. (#1259) (97, 1259)
    • [#1258] move metrics config keys and simplify metrics modules dependency
    • [#1250] fix codecov for protobuf (97)
    • [#1245] refactor metrics let it initialize by configuration
    • [#1242] perfect sql
    • [#1239] bugfix:fix CME in ZK discovery implementation. (97)
    • [#1237] bugfix:server start and handle remain branch session may cause NPE (97)
    • [#1232] Add unit tests for io.seata.common.util CompressUtil, DurationUtil, ReflectionUtil
    • [#1230] prioritize global transaction scanner #1227 (97, 1227)
    • [#1229] fix a typo (97)
    • [#1225] optimize the name of seata config environment. (97, 1209)
    • [#1222] fix bug of refresh cluster (1160)
    • [#1221] bugfix: fix in which SQL and database field names are inconsistent#1217 (1217)
    • [#1218] bugfix:containsPK ignoreCase (1217)
    • [#1210] 1. optimize arrayList single value
    • [#1207] All overriding methods must be preceded by @Override annotations.
    • [#1205] remove useless code
    • [#1202] output branchRollback failed log (97)
    • [#1200] bugfix:DefaultCoreTest.branchRegisterTest (1199)
    • [#1198] check the third-party dependencies license (1197)
    • [#1195] Clear the transaction context in TCC prepare methed
    • [#1193] Get lockmode by the storemode
    • [#1190] remove unused semicolons (97, 540)
    • [#1179] fix jackson default content
    • [#1177] write session may be failed,throw TransactionException but hold lock. (97, 1154)
    • [#1169] bugfix: use Set to avoid duplicate listeners. fixes #1126 (1126)
    • [#1165] add a missing placeholder in INSERT_UNDO_LOG_SQL (1164)
    • [#1162] Reset initialized flag & instance while destroy(). split [##1105 (983, 97)
    • [#1159] bugfix: AT mode resourceId(row_key) too long (97, 1158)
    • [#1150] updates seata's version in README.md (97)
    • [#1148] bugfix:the buffer may cause overflows when sql statement is long
    • [#1146] revise the package name of the module (97)
    • [#1105] refactor TmRpcClient & RmClient for common use. (97)
    • [#1075] Multiple environmental isolation
    • [#768] #751 add event bus mechanism and apply it in TC
    Source code(tar.gz)
    Source code(zip)
    seata-server-0.7.0.tar.gz(34.45 MB)
    seata-server-0.7.0.zip(34.47 MB)
  • v0.6.1(May 31, 2019)

    • [#1119] support weibo/motan
    • [#1075] Multiple environmental isolation
    • [#1087] Remove unnecessary copy of bytes.
    • [#1099] UndoLogParser change to SPI.
    • [#1113] optimize check style
    • [#1090] Change the method definition of UndoLogParser for better extensibility
    • [#1120] bugfix : use xid wrong when do branch commit and rollback
    • [#1135] bugfix:zk vulnerability and optimize dependencies
    • [#1138] bugfix: seata-server.bat classpath too long
    • [#1117] bugfix: fix field type is datetime equals fail
    • [#1115] modify seata-all & seata-bom deploy config
    Source code(tar.gz)
    Source code(zip)
    seata-server-0.6.1.tar.gz(27.46 MB)
    seata-server-0.6.1.zip(27.45 MB)
  • v0.6.0(May 24, 2019)

    • [#942] Store the transaction log into database

    • [#1014] Support etcd3 as configuration center

    • [#1060] Do data validation when undo.

    • [#1064] bugfix:size wrong between xid and branchId

    • [#1074] bugfix:typos and replace AIT's with lambdas

    • [#824] Add time limit when transaction retry on the server.

    • [#1082] Cache configuration instance.

    • [#1084] Refactor Charset using and blob utils

    • [#1080] upgrade fastjson and nacos-client

    Source code(tar.gz)
    Source code(zip)
    seata-server-0.6.0.tar.gz(27.26 MB)
    seata-server-0.6.0.zip(27.24 MB)
  • v0.5.2(May 17, 2019)

    • [#988] support Consul configuration center
    • [#1043] support sofa-rpc
    • [#987] optimize the use of reentrantLock instead of spinlock in concurrent scenarios within the same transaction
    • [#943] fix configuration wait timeout when there is no corresponding file configuration item
    • [#965] fix PreparedStatement where in,between problem
    • [#929] optimize GlobalSession for the first time to wait for locks
    • [#967] optimize partial log description
    • [#970] fix unable to read flush-disk-mode configuration item problem
    • [#916] optimize the readable index problem of decoding
    • [#979] optimize copyright
    • [#981] optimize pom dependencies, use caffine instead of guava cache, junit upgrade to junit5, use junit5 to transform original testng unit tests
    • [#991] optimize the header of the core module import
    • [#996] fix maven-surefire-plugin compilation error in mac environment
    • [#994] Fix ByteBuffer multiple flip problem
    • [#999] change the community's email subscription address
    • [#861] optimize the FailureHandler to periodically get the retrieved transaction result and print the successful result
    • [#802] optimize the lambda code style in GlobalTransactionalInterceptor
    • [#1026] fix troubleshooting for data* code files, add local transaction file exclusion path
    • [#1024] fix Consul module SPI configuration file path problem
    • [#1023] add the seata-all.jar for client full dependency
    • [#1029] fix the delay rollback caused by no channel when the client is restarting
    • [#1027] fix release-seata can not generate zip file problem
    • [#1033] fix createDependencyReducedPom to generate redundant xml problem
    • [#1035] fix branchCommit/branchRollback in TCC mode, but branchId is null
    • [#1040] refactor exceptionHandleTemplate and fix the problem that cannot be returned when the GlobalRollback branch throw exception
    • [#1036] replace Chinese comment with English comment
    • [#1051] optimize to check data changes when rollback, stop rollback if there is no data change
    • [#1017] optimize the processing logic of mysql undo executor construct undo sql
    • [#1063] fix the problem that the new transaction id conflict fails after the server is restarted after the server is restarted.
    Source code(tar.gz)
    Source code(zip)
    seata-server-0.5.2.tar.gz(29.38 MB)
    seata-server-0.5.2.zip(29.36 MB)
  • v0.5.1(Apr 30, 2019)

    • [#774] support Etcd3 registration center
    • [#793] support sofa-registry registration center
    • [#856] add batch delete undolog processing
    • [#786] support for branch transaction concurrency in global transactions
    • [#945] add the releaseLock method in the LockManager interface to optimize the calling logic
    • [#879] fix when batch delete undolog,the preparedStatement does not close
    • [#921] fix NPE exception when select for update
    • [#907] fix hostname can't be null exception
    • [#923] fix the problem that the key is not formatted when the nettyClientKeyPool connection is destroyed.
    • [#891] fix the NPE exception when using select union all
    • [#888] fix copyright checkstyle verification
    • [#901] fix parent node path does not exist when Zookeeper is registered
    • [#866] fix unable to generate dubbo:reference proxy class
    • [#877] fix concurrentModifyException when batch deleting undolog
    • [#875] fix select for update, Boolean cast ResultSet failed
    • [#830] fix RM late registration problem
    • [#872] fix RegisterRMRequest decoding message length check is not accurate
    • [#834] fix non-SQLException in ExecuteTemplate does not throw a exception
    • [#938] optimize the TransactionManager service loading logic
    • [#913] optimize the module structure of the RPC integration framework
    • [#795] optimize the performance of server node write files
    • [#925] optimize the same DefaultCoordinator instance when the server starts
    • [#930] optimize field access modifiers
    • [#904] optimize updated data query logic in UpdateExecutort
    • [#802] optimize checkstyle and add plugins
    • [#855] optimize the globalCommit always returns committed to the user in AT mode
    • [#831] optimize CountDownLatch in MessageFuture and replace it with CompletableFuture
    • [#882] modify copyright, add copyright automatic plugin
    • [#874] add the communication default configuration value
    Source code(tar.gz)
    Source code(zip)
    seata-server-0.5.1.tar.gz(29.36 MB)
    seata-server-0.5.1.zip(29.34 MB)
  • 0.5.0(Apr 19, 2019)

    • [#809] Change groupId,artifactId, and package
    • [#815] Add maven plugin to release seata with groupId io.seata
    • [#790] Change the startup parameters of seata-server to support database-storage
    • [#769] Modify the RPC protocol, remove the client's resolution of xid to be stateless
    • [#774] Optimizes the structure of config module and discovery module
    • [#783] Allow users config the count for client report retry dynamicly
    • [#791] Replace magic judgement of timeout status with status enum
    • [#836] Use maven-compiler-plugin to revision the version and add mvnw script to unify the maven version
    • [#820] Add rollback on for GlobalTransaction
    • [#772] Fix FileConfiguration config listener logic
    • [#807] Optimize the setting of full name of FileBasedSessionManager
    • [#804] Bugfix: branchCommit retry always failed
    Source code(tar.gz)
    Source code(zip)
    seata-server-0.5.0.tar.gz(20.52 MB)
    seata-server-0.5.0.zip(20.51 MB)
  • v0.4.2(Apr 12, 2019)

    • [#704] add local file write ByteBuffer pool
    • [#679] add registry close interface implementation, optimize RpcServer shutdown hook
    • [#713] add local file writes enable compression for messages that exceed the configured size
    • [#587] support for MySQL DDL statement
    • [#717] add Nacos Initialization Configuration Script Configuration and Completion Program Configuration File
    • [#726] support for DBCP, C3P0, BoneCP, HikariCP and Tomcat-JDBC connection pools
    • [#744] add ZooKeeper disconnection re-registration and subscription when reconnected
    • [#728] support for Consul Registration Center
    • [#569] fix already jdk proxy and no target only traverses the first implementation interface problem
    • [#721] fix ConfigFuture constructor timeout parameter does not work
    • [#725] fix MergedSendRunnable channel is unexpectedly closed, and add fail-fast
    • [#723] fix defaultServerMessageListener is not initialized
    • [#746] fix the failure of the test module caused by the DataSourceManager SPI
    • [#754] optimize Eureka registry
    • [#750] fix undolog caused by DataSourceManager SPI cannot delete problem
    • [#747] Delete MT mode, then will be replaced by TCC mode
    • [#757] fix rollback caused by RPC exception when performing BranchRollback retry
    • [#776] fix connection creation failure caused by toString exception when connection pool creates channel
    Source code(tar.gz)
    Source code(zip)
    fescar-server-0.4.2.tar.gz(20.89 MB)
    fescar-server-0.4.2.zip(20.87 MB)
  • v0.4.0(Mar 19, 2019)

  • v0.3.1(Mar 15, 2019)

  • v0.3.0(Mar 8, 2019)

    [#510] Support eureka registry center. [#498] Implement local transaction mode with global locks and resolve local transaction isolation issues. [#459] Fix mysql keyword generating sql problem as table name and column name. [#312] Fix the original business sql no where condition generation sql error problem. [#522] Fix file path security vulnerability. Remove useless, format, optimize import, javadoc, copyright for all module code

    Source code(tar.gz)
    Source code(zip)
    fescar-server-0.3.0.tar.gz(18.44 MB)
    fescar-server-0.3.0.zip(18.42 MB)
  • v0.2.3(Mar 2, 2019)

  • v0.2.1(Feb 18, 2019)

  • v0.2.0(Feb 14, 2019)

    • Support Nacos Service Registration and Configuration Center
    • Add Fescar-Server automatic recovery from file unfinished transaction operations to memory when restarting
    • Fix Fescar-Server restart may cause XID duplication
    • Fix Windows startup script $EXTRA_JVM_ARGUMENTS parameter error
    • Fix distributed transaction local nested inner transaction commit/rollback causes outer transaction exception problem
    • Fix local transaction commit exception, local transaction does not rollback problem
    Source code(tar.gz)
    Source code(zip)
    fescar-server-0.2.0.tar.gz(9.73 MB)
    fescar-server-0.2.0.zip(9.72 MB)
Owner
Seata
Simple Extensible Autonomous Transaction Architecture
Seata
A strongly consistent distributed transaction framework

A strongly consistent distributed transaction framework

dromara 1.9k Jan 3, 2023
JTA Transaction Manager

The master version of the current source was built and published on maven central over here. Help! BTM is looking for a new motivated team to look aft

Bitronix Open Source Software 400 Dec 27, 2022
Financial-level flexible distributed transaction solution

Financial-level flexible distributed transaction solution

dromara 3.9k Dec 30, 2022
Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding

Everyone can develop projects independently, quickly and efficiently! What is spring-boot-plus? A easy-to-use, high-speed, high-efficient, feature-ric

geekidea 2.3k Dec 31, 2022
A high available,high performance distributed messaging system.

#新闻 MetaQ 1.4.6.2发布。更新日志 MetaQ 1.4.6.1发布。更新日志 MetaQ 1.4.5.1发布。更新日志 MetaQ 1.4.5发布。更新日志 Meta-ruby 0.1 released: a ruby client for metaq. SOURCE #介绍 Meta

dennis zhuang 1.3k Dec 12, 2022
Table-Computing (Simplified as TC) is a distributed light weighted, high performance and low latency stream processing and data analysis framework. Milliseconds latency and 10+ times faster than Flink for complicated use cases.

Table-Computing Welcome to the Table-Computing GitHub. Table-Computing (Simplified as TC) is a distributed light weighted, high performance and low la

Alibaba 34 Oct 14, 2022
A distributed lock that supports the use of Redis and Zookeeper, out of the box, fast and easy to use

lock-spring-boot-starter A distributed lock that supports the use of Redis and Zookeeper, out of the box, fast and easy to use 一款基于 Redis 和 Zookeeper

Pear Stack 9 Oct 15, 2022
A strongly consistent distributed transaction framework

A strongly consistent distributed transaction framework

dromara 1.9k Jan 3, 2023
an open source solution to application performance monitoring for java server applications

Stagemonitor is a Java monitoring agent that tightly integrates with time series databases like Elasticsearch, Graphite and InfluxDB to analyze graphe

stagemonitor 1.7k Dec 30, 2022
mall4cloud微服务商城,基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的B2B2C微服务商城系统,采用主流的互联网技术架构、全新的UI设计 B2B2C微服务商城|小程序微服务商城|

README 前言 本商城是基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服务B2B2C电商商城系统,采用主流的互联网技术架构、全新的UI设计、支持集群部署、服务注册和发现以及拥有完整的订单流程等

null 3k Jan 1, 2023
Makes fire created by natural lightning cosmetic, meaning no blocks are destroyed from bad weather

Lightning Podoboo Makes fire created by natural lightning cosmetic, meaning no blocks are destroyed from bad weather. Keep the doFireTick gamerule ena

Lilly Rose Berner 10 Dec 15, 2022
Bukkit transaction API for predicting when a server packet arrives at a client. Mainly intended for use in Minecraft anticheats.

Pledge A high performance and lightweight Bukkit packet tracking API for predicting when a server packet arrives at a client using transactions. Mainl

Thomazz 32 Dec 1, 2022
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.3k Jan 9, 2023
HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.

HornetQ If you need information about the HornetQ project please go to http://community.jboss.org/wiki/HornetQ http://www.jboss.org/hornetq/ This file

HornetQ 245 Dec 3, 2022
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.2k Dec 31, 2022
Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Tink A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. Ubuntu

Google 12.9k Jan 3, 2023
GreenMail is an open source, intuitive and easy-to-use test suite of email servers for testing purposes.

GreenMail GreenMail is an open source, intuitive and easy-to-use test suite of email servers for testing purposes. Supports SMTP, POP3, IMAP with SSL

null 529 Dec 28, 2022
Universal, flexible, high-performance distributed ID generator

CosId Universal, flexible, high-performance distributed ID generator 中文文档 Introduction CosId aims to provide a universal, flexible and high-performanc

Ahoo Wang 256 Dec 27, 2022
SeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time).

SeaTunnel SeaTunnel was formerly named Waterdrop , and renamed SeaTunnel since October 12, 2021. SeaTunnel is a very easy-to-use ultra-high-performanc

The Apache Software Foundation 4.4k Jan 2, 2023
Distributed, masterless, high performance, fault tolerant data processing

Onyx What is it? a masterless, cloud scale, fault tolerant, high performance distributed computation system batch and stream hybrid processing model e

Onyx 2k Dec 30, 2022