Comments (3)
目前确实是这样,
在框架自带的 幂等/调用次序控制 实现里,如果try没有提交,cancel对应的业务方法也是不会执行的
如果没有启用框架的幂等/次序控制 功能,业务就需要自行判断try有没有执行
为了提高效率,可以在已知 从事务 返回了异常的情况下,协调器不再调用canel,作为一个效率优化手段。
但对于业务实行实现的 幂等/次序 控制,不能省略该部分代码,因为有可能由于超时等原因,框架没有成功接收 从事务 返回的异常信息,此时从事务处于未知状态,因此框架还是会调用cancel
from easytransaction.
T阶段 我可能调用A这台机器超时了(A机器可能线程阻塞返回超时),框架直接cancel的时候(调用B机器,正常)发现并未执行try 返回cancel成功,在这之后A机器线程恢复正常执行了T,如何处理?
from easytransaction.
对于使用框架幂等的情况来说,其会控制该情况的发生,因为TRY和CANCEL会同时竞争一条记录,该记录会保证TRY有先后顺序。若TRY和CANCEL同时进入到事务中,则框架会有乐观锁机制回滚其中一个。
- 若try被回滚了,则没有关系,整个流程就结束了。
- 若cancel被回滚了的话,则CANCEL会重试,然后CANCEL再次尝试时就会成功。
对于不使用框架幂等,业务自行处理时,需要自行考虑上述问题的处理形式,通常来说,业务自行处理的形式应该于框架实现的类似
还有,建议新问题提新ISSUE,容易被大家发现
from easytransaction.
Related Issues (20)
- 有计划支持dubbo2.7吗? HOT 1
- 请问有具体的sample吗?感觉不容易上手使用?建议作者以后可以提供使用文档。谢谢。 HOT 1
- 对框架幂等疑问? HOT 2
- ons异步消息有非侵入式写法的demo吗?
- 建议
- TCC方案实现的话是否可以考虑下websocket HOT 1
- EtReliableMsgAnnotationBusinessProviderBuilder 和 EtBestEffortMsgAnnotationBusinessProviderBuilder执行consume,永远返回EasyTransConsumeAction.CommitMessage,这是不是有问题? HOT 1
- EasyTransMsgInitializer 消息消费,如果业务代码抛异常,框架代码空指针问题 HOT 1
- DatabaseSnowFlakeIdGenerator has something wrong? HOT 2
- HikariDataSource (HikariPool-1) is not DataSourceProxy, please correct the config! HOT 2
- 用tcc-and-fescar这个demo并发测试同一个请求,锁表fescar_lock主键冲突。 HOT 3
- Dependency conflicts on org.ow2.asm:asm, leading to invoking unexpected methods HOT 1
- 现在这个框架可以整合mybatis吗? HOT 1
- 请问下如果某个分支服务异常,但是使用kafka消息队列的服务不能回滚?请教下采用kafka消息队列的这个服务怎么才能回滚? HOT 2
- ET感觉太难入门了,希望出几篇文章介绍源码
- 同一个服务多个数据源事务一致性问题
- Demo
- 能否升级支持一下springboot 2.X
- 请教:这个EasyTransaction能够支持微软的SQL Server吗
- ET集成Seata AT模式时,EtDataSourceManager类获取不到DataSourceProxy
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from easytransaction.