Giter Site home page Giter Site logo

apache / incubator-seata Goto Github PK

View Code? Open in Web Editor NEW
24.9K 847.0 8.7K 23.3 MB

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

Home Page: https://seata.apache.org/

License: Apache License 2.0

Java 96.95% Shell 0.41% Python 0.04% Dockerfile 0.01% Mustache 0.01% ANTLR 1.11% Lua 0.33% Batchfile 0.04% Kotlin 0.07% TypeScript 0.68% SCSS 0.29% TSQL 0.05%
tcc saga xa at consistency distributed-transaction microservice

incubator-seata's Introduction

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 three roles in Seata Framework:

  • 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

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.
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 .

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

Depending on the scenario, choose one of the two dependencies: io.seata:seata-all or io.seata:seata-spring-boot-starter.

<properties>
  <seata.version>2.0.0</seata.version>
</properties>

<dependencies>
<!--dependencies for non-SpringBoot application framework-->
  <dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>${seata.version}</version>
  </dependency>

<!--If your project base on `Spring Boot`, you can directly use the following dependencies-->
<!--Notice: `seata-spring-boot-starter` has already included `seata-all` dependency-->
  <dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>${seata.version}</version>
  </dependency>
</dependencies>

Quick Start

Quick Start

Documentation

You can view the full documentation from Seata Official Website: Seata Website page.

Reporting bugs

Please follow the template for reporting any issues.

Security

Please do not use our public issue tracker but refer to our security policy

Contributing

Contributors are welcomed to join the Seata project. Please check CONTRIBUTING andCONTRIBUTING-CNabout 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 韵达快递 科大讯飞 奇虎360 收钱吧 太极计算机 美的集团 **网安 政采云 浙江公安厅 特步 中通快递 欧莱雅百库 浙江烟草 波司登 凯京科技 点购集团 求是创新健康 科蓝 康美药业 雁联 学两手 衣二三 北京薪福社 叩丁狼教育 悦途出行 国信易企签 睿颐软件 全房通 有利网 赛维 安心保险 科达科技 会分期 会找房 会通教育 享住智慧 兰亮网络 桔子数科 蓝天教育 烟台欣和 阿康健康 财新传媒 新脉远 乾动新能源 路客精品民宿 深圳好尔美 浙大睿医 深圳市云羿贸易科技有限公司 居然之家 深圳来电科技有限公司 臻善科技 **支付通 众网小贷 谐云科技 浙江甄品 深圳海豚网 汇通天下 九机网 有好东西 南京智慧盾 数跑科技 拉粉粉 汇通达 易宝支付 维恩贝特 八库 大诚若谷 杭州华网信息 深圳易佰 易点生活 成都数智索 北京超图 江西群享科技有限公司 宋城独木桥网络有限公司 唯小宝(江苏)网络技术有限公司 杭州喜团科技 海典软件 中元健康科技有限公司 宿迁民丰农商银行 上海海智在线 丞家(上海)公寓管理 安徽国科新材科 商银信支付 钛师傅云 广州力生信息 杭州启舰科技有限公司 微链 上海美浮特 江西群享科技有限公司 杭州中威慧云医疗科技有限公司 易族智汇(北京) 佛山宅无限 F5未来商店 重庆雷高科技有限公司 甄品信息科技 行云全球汇跨境电商(杭州分部) 世纪加华 快陪练 西南石油大学 厦门服云信息科技有限公司 领课网络 美通社 睿维科技有限公司 郑州信源信息技术 荣怀集团 浙江群集大数据科技有限公司 北京易点租有限公司 浙江蕙康科技有限公司 致远创想 深圳智荟物联技术有限公司 源讯** 武汉江寓生活服务有限公司 大账房 上海阳光喔教育科技有限公司 北京新学道教育科技有限公司 北京悦途出行网络科技公司 上海意贝斯特信息技术有限公司 御家汇 广州社众软件 浩鲸科技 华宇信息 **云尚科技 卫宁健康 聚合联动 熙菱信息 鲸算科技 杭州沃朴物联科技有限公司 深圳市臻络科技有限公司 白云电气 百果园 海尔 六倍体科技 泉州银行 小滴课堂 医百顺 正泰中自控制 **电子科技网络 卓源软件 重庆直通物流有限公司 海澜集团 南宁微服信息技术有限公司 日事清 小鹏汽车 平安人寿 光大银行

incubator-seata's People

Contributors

bughue avatar caohdgege avatar cmonkey avatar coffeelatte007 avatar doubledimple avatar ezkayotwjprkxwcuyeeb avatar funky-eyes avatar ggndnn avatar github-ygy avatar helloworlde avatar jsbxyyx avatar l81893521 avatar leizhiyuan avatar lightclouds917 avatar liuqiufeng avatar long187 avatar lovepoem avatar lvekee avatar objcoding avatar pengten avatar ph3636 avatar ptyin avatar renliangyu857 avatar sharajava avatar slievrly avatar ujjboy avatar wangliang181230 avatar xingfudeshi avatar zhangthen avatar zjinlei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

incubator-seata's Issues

After a branch in transaction A is submitted, it is modified by a branch of global transaction B. The other branches in A are abnormal. How does A roll back the data?

If a branch in global transaction A is committed and is modified by a branch of global transaction B, the other branches in A are abnormal, how does A roll back the data?
// 如果全局事物A中的一个分支提交之后 被全局事物B的一个分支修改数据,A中的其他分支异常,A要怎么回滚数据?

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Ask questions about server and Image and MT mode

1, server abstraction into a service, but brought the consumption of rpc, why give up embedded in the application?
// 1、server抽象成服务,但是带来了rpc的消耗,为什么放弃 嵌入在应用呢?
Can you tell the pros and cons of the selection?
// 能否告知选型的利弊?
2, on the beforImage and afterImage, the framework in the implementation of the actual implementation of the update, select for update [previously according to the update conditions, the next time according to the primary key]. This should be strictly required in the sql generated for the business. Otherwise it is easy to bring the problem of deadlock. I hope that the later documents will be more abundant.
// 2、关于beforImage和afterImage,框架 在执行真正执行update时,先后都 select for update【前一次根据更新条件,后一次根据主键】。 这样在对业务生成的sql上面应该是需要有严格的要求的吧。否则很容易带来死锁的问题吧。希望后期文档能更丰富一点

//
3, now open source is AT mode, MT mode is temporarily not supported, when will open source?
// 3、现在开源的是AT模式,MT模式暂时不支持,啥时候会开源呀?

//

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

doc

suggest that write doc for interface

demo run exception

Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method deduct in the service com.alibaba.fescar.tm.dubbo.StorageService. No provider available for the service com.alibaba.fescar.tm.dubbo.StorageService from registry 224.5.6.7:1234 on the consumer 192.168.10.1 using the dubbo version 2.5.3. Please check if the providers have been started and registered.

求中文文档!

明明是国人开发的框架,却连个中文文档都没有,这一点与dubbo差远了。

[WeeklyReport] Weekly report for FESCAR 2019-1-4 to 2019-1-11

Weekly Report of FESCAR

This is a weekly report of FESCAR. It summarizes what have changed in the project during the passed week, including pr merged, new contributors, and more things in the future.
It is all done by @fescar-robot which is a collaborate robot. See: https://github.com/AlibabaDR/Collabobot .

Repo Overview

Watch Star Fork Contributors
141 1496 (↑1496) 335 (↑335) 7 (↑7)
New Issues Closed Issues New PR Merged PR
29 5 15 11

PR Overview

Thanks to contributions from community, FESCAR team merged 11 pull requests in the repository last week. They are:

  • Rename AbstractExceptionHander to AbstractExceptionHandler (#30)
  • update epool to epoll. (#24)
  • Spelling error (#19)
  • delete unused import (#16)
  • Fix grammar issues in README.md (#15)
  • add ignore, release 0.1.0 changelog (#12)
  • Update README (#8)
  • add copyright and javadoc (#5)
  • fix listenPort allow user defined (#4)
  • add server distribution (#3)
  • fescar init (#2)

Code Review Statistics

FESCAR encourages everyone to participant in code review, in order to improve software quality. Every week @fescar-robot would automatically help to count pull request reviews of single github user as the following. So, try to help review code in this project.

Contributor ID Pull Request Reviews

Contributors Overview

It is FESCAR team's great honor to have new contributors from community. We really appreciate your contributions. Feel free to tell us if you have any opinion and please share this open source project with more people if you could. If you hope to be a contributor as well, please start from https://github.com/alibaba/fescar/blob/master/CONTRIBUTING.md .
Here is the list of new contributors:

@sharajava
@slievrly
@unlimitedsola
@andaren
@xiajunhust
@zsongshu
@jessonzh

Thanks to you all.

Quick start is not friendly enough

The case description is not detailed, and how to combine with dubbo is not elaborated.
// 案例描述不详细,与dubbo如何结合 没有阐述清楚

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

Transaction rollback problem

For example, for a branch transaction, the user performs a delete operation, then the prepare phase is committed, but the global transaction fails, causing the rollback.
// 比如某个分支事务,用户执行了 delete 操作,那么 prepare 阶段,提交了,但是全局事务失败,导致回滚

The current practice is to get all the SQL statements executed by the user through the proxy connection, save before, and atfer image in the undo_log table.
// 目前的做法是通过 代理 connection,拿到用户执行的所有sql语句,保存 before,atfer image 在 undo_log 表中。
If you submit, pass gxid, bxid delete data undo_log
// 如果提交就通过 gxid, bxid 删除数据undo_log
If it fails, the data is rolled back to get the before image.
// 如果失败了,就数据回退搞 before image .
However, delete succeeded, but the global transaction failed, but other transactions, before the rollback, insert the same key data, resulting in the failure to roll back? Either the xa transaction is used, and the data of these changes cannot be modified before the commit/rollback.
// 但是 delete 成功了,但是全局事务失败,但是其他事务,在回滚前,insert了相同key的数据,导致无法回滚? 要么就是采用 xa 事务,这些变更的数据,commit/rollback 前没法修改。

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

文档

没有中文文档吗?还是文档还未上传更新?

Is the database only available in relational databases?

Is the database only available in relational databases? The nosql database cannot be used?
// 是不是数据库只能用关系型数据库?nosql数据库无法使用吧?

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

What's the Different?

There are too many distributed transaction frameworks ,like tcc_transaction,byteTcc,Hmily,raincat .I do not know how to choose them.

If a table is used by a service with GlobalTransaction, is it true that all operations involving this table should be GlobalTransaction?

Hello, I looked at the code. It seems that if the service is GlobalTransactional, it will register a branch to the TC while the local transaction commits, and get the primary key lock of all the affected table records in the local transaction.
// 您好,我看了一下代码,貌似每个服务如果是GlobalTransactional的话,都会在本地事务commit的时候往TC那边register一个branch同时获取这个本地事务内所有影响到的表记录的主键锁。

//
If two interfaces A and B in a service operate on the same table, A uses GlobalTransaction, and B does not use. When both interfaces receive the request, they both update the same record of the same table. When A wants to roll back to beforeImage at execution time, is there a problem (the B update is flushed out)
// 如果一个服务里面的两个接口A和B都操作了同一个表,A使用了GlobalTransaction,B没有使用,当这两个接口同时收到请求,都update了同一个表的同一条记录,如果这个时候A要回滚到执行时候的beforeImage,是不是就有问题了(把B的更新冲掉了)

//
In this case, is it necessary to use GlobalTransaction for all operations on this table (not just a service, as long as the service of the same table is operated)?
// 这种情况是不是得要求所有对这个表的操作的用GlobalTransaction了(不仅是一个服务,只要操作了同一个表的服务都要)?

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

Can't assign requested address with quick start

I tried the quick start example but met the following exception, is there any special configuration required? The vm option -Djava.net.preferIPv4Stack=true was used.

Exception message in BusinessServiceImpl:

Exception in thread "main" java.lang.RuntimeException: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [update storage_tbl set count = count - ? where commodity_code = ?]; SQL state [null]; error code [0]; com.alibaba.fescar.core.exception.TransactionException: Runtime; nested exception is java.sql.SQLException: com.alibaba.fescar.core.exception.TransactionException: Runtime
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [update storage_tbl set count = count - ? where commodity_code = ?]; SQL state [null]; error code [0]; com.alibaba.fescar.core.exception.TransactionException: Runtime; nested exception is java.sql.SQLException: com.alibaba.fescar.core.exception.TransactionException: Runtime
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
	at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:42)
	at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
	at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
	at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
	at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
	at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
	at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
	at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: com.alibaba.fescar.core.exception.TransactionException: Runtime
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.recognizeLockKeyConflictException(ConnectionProxy.java:80)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:131)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.setAutoCommit(ConnectionProxy.java:176)
	at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:68)
	at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
	at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
	at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
	at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
	at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
	at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
	... 34 more
Caused by: com.alibaba.fescar.core.exception.TransactionException: Runtime
	at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:65)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
	... 43 more
Caused by: com.alibaba.fescar.common.exception.FrameworkException: can not register RM,err:can not connect to fescar-server.
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:357)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
	at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
	... 45 more

	at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:108)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
	at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
	at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Exception message in StorageServiceImpl:

10.38.130.49 is my laptop's ip address.

2019-01-11 14:27:11,956 [FESCAR] [DubboServerHandler-10.38.130.49:20882-thread-22] ERROR com.alibaba.fescar.core.rpc.netty.RmRpcClient - 0304
com.alibaba.fescar.common.exception.FrameworkException: can not connect to fescar-server.
	at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:241)
	at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:63)
	at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:41)
	at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:354)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
	at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
	at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
	at com.alibaba.fescar.rm.datasource.ConnectionProxy.setAutoCommit(ConnectionProxy.java:176)
	at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:68)
	at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
	at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
	at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
	at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
	at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
	at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
	at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:42)
	at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
	at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
	at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
	at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
	at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
	at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
	at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.fescar.common.exception.FrameworkException: connect failed, can not connect to fescar-server.
	at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:236)
	... 54 common frames omitted
Caused by: io.netty.channel.AbstractChannel$AnnotatedSocketException: Can't assign requested address: /10.38.130.49:0
	at sun.nio.ch.Net.connect0(Native Method)
	at sun.nio.ch.Net.connect(Net.java:454)
	at sun.nio.ch.Net.connect(Net.java:446)
	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
	at io.netty.util.internal.SocketUtils$3.run(SocketUtils.java:83)
	at io.netty.util.internal.SocketUtils$3.run(SocketUtils.java:80)
	at java.security.AccessController.doPrivileged(Native Method)
	at io.netty.util.internal.SocketUtils.connect(SocketUtils.java:80)
	at io.netty.channel.socket.nio.NioSocketChannel.doConnect(NioSocketChannel.java:310)
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.connect(AbstractNioChannel.java:254)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1366)
	at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:545)
	at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:530)
	at io.netty.channel.ChannelDuplexHandler.connect(ChannelDuplexHandler.java:50)
	at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:545)
	at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:530)
	at io.netty.channel.ChannelDuplexHandler.connect(ChannelDuplexHandler.java:50)
	at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:545)
	at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:530)
	at io.netty.channel.ChannelDuplexHandler.connect(ChannelDuplexHandler.java:50)
	at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:545)
	at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:530)
	at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:512)
	at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:1024)
	at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:259)
	at io.netty.bootstrap.Bootstrap$3.run(Bootstrap.java:252)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	... 1 common frames omitted
Caused by: java.net.BindException: Can't assign requested address
	... 32 common frames omitted

UUIDGenerator 's magic number?

com.alibaba.fescar.server.UUIDGenerator
该类中
generateUUID()方法中2000000000(9个0)是因为写错吗?还是没有用到UUID_INTERNAL(8个0)?

examples improvement

The examples module should be changed to a multi-module project to facilitate developers to contribute different cases.

Spring boot instance

Can provide a spring boot example呗
// 能提供一个 spring boot 的例子呗

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Spring cloud is not currently supported

The use of spring cloud has become more and more extensive, support as soon as possible
// spring cloud的使用已经越来越广泛了,尽快支持哈

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

**的开源,请用中文

我对语言没有歧视,但我认为,**的开源产品就应该用中文文档。你们是想更多的**公司用还是外国公司用?想想哪个更现实点。

From the current lockManager, the server is only allowed to deploy one?

I see that the global lock is synchronized. In the case of cluster deployment, something goes wrong. .
// 我看全局锁是用了synchronized呀。集群部署情况下会出错吧。。


Simply look at the code of the client begin to tune to the remote and only support a single server
// 简单看了下客户端begin的代码 调到远程也是只支持单个server

private String loadBalance() {
String[] addresses = serviceManager.lookup(transactionServiceGroup);
if (addresses == null || addresses.length == 0) {
throw new FrameworkException(NoAvailableService);
}
// Just single server node
return addresses[0];
}

How to deal with the bottleneck of a single-node server? Transaction registration, coordination.
// 单节点的server的瓶颈如何处理? 事务注册,协调。

Single point of risk?
// 单点风险?

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Storageservice execution error

Start the example service, and the storageserviceimpl reports an error when executing the deduct. What is the reason for this?
// 启动example服务,storageserviceimpl在执行deduct的时候报错,请问下这是什么原因

//
com.alibaba.fescar.common.exception.FrameworkException: can not connect to fescar-server.
// com.alibaba.fescar.common.exception.FrameworkException: can not connect to fescar-server.
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:241)
// at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:241)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:63)
// at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:63)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:41)
// at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:41)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
// at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:354)
// at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:354)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
// at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
// at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
// at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
// at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
// at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
// at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
// at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.setAutoCommit(ConnectionProxy.java:176)
// at com.alibaba.fescar.rm.datasource.ConnectionProxy.setAutoCommit(ConnectionProxy.java:176)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:68)
// at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:68)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
// at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
// at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
// at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
// at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
// at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
// at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
// at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
// at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
// at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
// at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:42)
// at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:42)
at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
// at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
// at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
// at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
// at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
// at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
// at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
// at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
// at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
// at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
// at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
// at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
// at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
// at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
// at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
// at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
// at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
// at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
// at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
// at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
// at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
// at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
// at java.lang.Thread.run(Thread.java:748)

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

can not connect to fescar-server.

The official demo, OrderServiceImpl, AccountServiceImpl, StorageServiceImpl, can be started normally, BusinessServiceImpl can also call the remote service normally, but when executing the specific update method, report can not connect to fescar-server, generated Xid is as follows xid: 10.96.2.106:0:200986881, fescar-server is a local service, the computer is 4 core 16G, win10, JDK1.8, use the latest code, please help analyze the specific reasons, thank you!
// 官方给出的demo中,OrderServiceImpl,AccountServiceImpl,StorageServiceImpl,都可以正常启动,BusinessServiceImpl也可以正常调用远程服务,但在执行具体的update方法时,报can not connect to fescar-server,生成的xid如下xid: 10.96.2.106:0:200986881,fescar-server为本地服务,电脑是4核16G,win10,JDK1.8,使用最新的代码,请帮忙分析一下具体原因,谢谢!
2019-01-12 10:27:06,950 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.tm.dubbo.StorageService - Storage Service Begin ... xid: 10.96.2.106:0:200986881
2019-01-12 10:27:13,164 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.RmRpcClient - will connect to 10.96.2.106:0
2019-01-12 10:27:13,166 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.RmRpcClient - RM will register :jdbc:mysql://47.106.93.140:3306/fescar
2019-01-12 10:27:13,169 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory - NettyPool create channel to {"address":"10.96.2.106:0","message":{"applicationId":"dubbo-demo-storage-service","byteBuffer":{"char":"\u0000","direct":false,"double":0.0,"float":0.0,"int":0,"long":0,"readOnly":false,"short":0},"resourceIds":"jdbc:mysql://47.106.93.140:3306/fescar","transactionServiceGroup":"my_test_tx_group","typeCode":103,"version":"0.1.0"},"transactionRole":"RMROLE"}
2019-01-12 10:27:13,174 [FESCAR] [NettyClientSelector_RMROLE_1] INFO com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting - ChannelHandlerContext(RmRpcClient#0, [id: 0xe72b116f]) will closed
2019-01-12 10:27:13,209 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] ERROR com.alibaba.fescar.core.rpc.netty.RmRpcClient - 0304
com.alibaba.fescar.common.exception.FrameworkException: can not connect to fescar-server.
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:241)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:63)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:1)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:354)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:60)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:48)
at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.fescar.common.exception.FrameworkException: connect failed, can not connect to fescar-server.
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:236)
... 53 common frames omitted
2019-01-12 10:27:13,239 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.RmRpcClient - will connect to 10.96.2.106:0
2019-01-12 10:27:13,241 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.RmRpcClient - RM will register :jdbc:mysql://47.106.93.140:3306/fescar
2019-01-12 10:27:13,244 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] INFO com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory - NettyPool create channel to {"address":"10.96.2.106:0","message":{"applicationId":"dubbo-demo-storage-service","byteBuffer":{"char":"\u0000","direct":false,"double":0.0,"float":0.0,"int":0,"long":0,"readOnly":false,"short":0},"resourceIds":"jdbc:mysql://47.106.93.140:3306/fescar","transactionServiceGroup":"my_test_tx_group","typeCode":103,"version":"0.1.0"},"transactionRole":"RMROLE"}
2019-01-12 10:27:13,248 [FESCAR] [NettyClientSelector_RMROLE_1] INFO com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting - ChannelHandlerContext(RmRpcClient#0, [id: 0x55929b63]) will closed
2019-01-12 10:27:13,251 [FESCAR] [DubboServerHandler-10.96.2.106:20882-thread-2] ERROR com.alibaba.fescar.core.rpc.netty.RmRpcClient - 0304
com.alibaba.fescar.common.exception.FrameworkException: can not connect to fescar-server.
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:241)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:63)
at com.alibaba.fescar.core.rpc.netty.NettyPoolableFactory.makeObject(NettyPoolableFactory.java:1)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.doConnect(RmRpcClient.java:354)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.connect(RmRpcClient.java:322)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.getRemoteServerChannel(RmRpcClient.java:243)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:228)
at com.alibaba.fescar.core.rpc.netty.RmRpcClient.sendMsgWithResponse(RmRpcClient.java:248)
at com.alibaba.fescar.rm.datasource.DataSourceManager.branchRegister(DataSourceManager.java:57)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:157)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:129)
at com.alibaba.fescar.rm.datasource.ConnectionProxy.setAutoCommit(ConnectionProxy.java:176)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:68)
at com.alibaba.fescar.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:37)
at com.alibaba.fescar.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:50)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:70)
at com.alibaba.fescar.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:32)
at com.alibaba.fescar.rm.datasource.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:69)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
at com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl.deduct(StorageServiceImpl.java:48)
at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.fescar.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:57)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)
at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.fescar.common.exception.FrameworkException: connect failed, can not connect to fescar-server.
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemotingClient.getNewChannel(AbstractRpcRemotingClient.java:236)
... 54 common frames omitted

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Is this a potential bug ?

in the following code, i guess what actually it wants to convey is !inGlobalTransaction()

public static boolean inGlobalTransaction() {
        return CONTEXT_HOLDER.get(KEY_XID) != null;
    }

    public static void assertNotInGlobalTransaction() {
        if (inGlobalTransaction()) {
            throw new ShouldNeverHappenException();
        }
    }

fescar-server must run startup script with port

why not read config from application.conf or have default port 8091? I run startup script without port, because the xid is consists of ipAddress + ":" + port + ":" + tranId and generate value become 192.168.2.170:0:200918724, so the second parameter is 0, means port is 0. the RM connect fescar-server is failure.

AbstractRpcRemoting # sendAsyncRequest

This method is synchronous to pick up the name
// 这个方法是同步的咋起这个名字

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

Is dubbo necessary component?

Is importing dubbo must?
If I don't want to use dubbo,what will I do?
Are there plans to support grpc or Kafka in the future?

com.alibaba.fescar.core.exception.TransactionException: java.util.concurrent.TimeoutException: problem

If the @GlobalTransactional is added to the sample code, the following error will be reported. If the @GlobalTransactional annotation is not added, it can be executed normally. What is the reason?
// 样例代码中如果加上@GlobalTransactional就报下面的错误,如果不加@GlobalTransactional注解则可以正常执行,请问是啥原因?

2019-01-11 15:57:15,059 [FESCAR] [main] INFO com.alibaba.fescar.tm.dubbo.BusinessService - Main business begin ... xid: null
2019-01-11 15:57:27,709 [FESCAR] [main] DEBUG com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting - offer message: com.alibaba.fescar.core.protocol.transaction.GlobalBeginRequest@38a6964d
2019-01-11 15:57:57,712 [FESCAR] [main] ERROR com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting - wait response error:cost 30004 ms,ip:127.0.0.1:8091,request:com.alibaba.fescar.core.protocol.transaction.GlobalBeginRequest@38a6964d
2019-01-11 15:57:57,749 [FESCAR] [main] WARN com.alibaba.fescar.tm.api.DefaultFailureHandlerImpl - Failed to begin transaction.
com.alibaba.fescar.core.exception.TransactionException: java.util.concurrent.TimeoutException: cost 30004 ms
at com.alibaba.fescar.tm.DefaultTransactionManager.syncCall(DefaultTransactionManager.java:100)
at com.alibaba.fescar.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:65)
at com.alibaba.fescar.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:82)
at com.alibaba.fescar.tm.api.TransactionalTemplate.execute(TransactionalTemplate.java:40)
at com.alibaba.fescar.spring.annotation.GlobalTransactionalInterceptor.invoke(GlobalTransactionalInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl$$EnhancerByCGLIB$$e0bc343.purchase()
at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl.main(BusinessServiceImpl.java:62)
Caused by: java.util.concurrent.TimeoutException: cost 30004 ms
at com.alibaba.fescar.core.protocol.MessageFuture.get(MessageFuture.java:46)
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting.sendAsyncRequest(AbstractRpcRemoting.java:265)
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting.sendAsyncRequestWithResponse(AbstractRpcRemoting.java:194)
at com.alibaba.fescar.core.rpc.netty.TmRpcClient.sendMsgWithResponse(TmRpcClient.java:196)
at com.alibaba.fescar.core.rpc.netty.TmRpcClient.sendMsgWithResponse(TmRpcClient.java:216)
at com.alibaba.fescar.tm.DefaultTransactionManager.syncCall(DefaultTransactionManager.java:98)
... 8 common frames omitted
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl$$EnhancerByCGLIB$$e0bc343.purchase()
at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl.main(BusinessServiceImpl.java:62)
Caused by: com.alibaba.fescar.core.exception.TransactionException: java.util.concurrent.TimeoutException: cost 30004 ms
at com.alibaba.fescar.tm.DefaultTransactionManager.syncCall(DefaultTransactionManager.java:100)
at com.alibaba.fescar.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:65)
at com.alibaba.fescar.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:82)
at com.alibaba.fescar.tm.api.TransactionalTemplate.execute(TransactionalTemplate.java:40)
at com.alibaba.fescar.spring.annotation.GlobalTransactionalInterceptor.invoke(GlobalTransactionalInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
... 2 more
Caused by: java.util.concurrent.TimeoutException: cost 30004 ms
at com.alibaba.fescar.core.protocol.MessageFuture.get(MessageFuture.java:46)
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting.sendAsyncRequest(AbstractRpcRemoting.java:265)
at com.alibaba.fescar.core.rpc.netty.AbstractRpcRemoting.sendAsyncRequestWithResponse(AbstractRpcRemoting.java:194)
at com.alibaba.fescar.core.rpc.netty.TmRpcClient.sendMsgWithResponse(TmRpcClient.java:196)
at com.alibaba.fescar.core.rpc.netty.TmRpcClient.sendMsgWithResponse(TmRpcClient.java:216)
at com.alibaba.fescar.tm.DefaultTransactionManager.syncCall(DefaultTransactionManager.java:98)
... 8 more

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

I wanna test the spring cloud function of transaction manager

I want to test the functionality of this Issue and see if it is already good.
// 我想测试一下这个 Issue 的功能,看看是不是已经好了。

In fact, I don't know what distributed transactions are, I feel that I support a lot of databases.
// 其实并不知道分布式事务是做什么的,感觉支持了很多数据库。

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

About UNDO_LOG table

The same db used by the three services in the demo, in the actual application, whether the db corresponding to each service needs to create UNDO_LOG table?
// demo中三个service使用的同一个db,在实际应用中,是否每个service对应的db都需要create UNDO_LOG table?

// !!!!WE STRONGLY ENCOURAGE YOU TO DESCRIBE YOUR ISSUE IN ENGLISH!!!!

Is there a performance test?

Look at the official documentation that is high performance, so here is the approximate reference data? Or approximate performance data used inside Ali.
// 看官方文档说是高性能,那么这里有大概的参考数据吗?或者在阿里内部使用的大概性能数据。

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.