[GitHub] [servicecomb-pack] cmonkey opened a new pull request #526: SCB-1416 Refactoring the core part of alpha-fsm module to move to alpha-core
cmonkey opened a new pull request #526: SCB-1416 Refactoring the core part of alpha-fsm module to move to alpha-core URL: https://github.com/apache/servicecomb-pack/pull/526 Follow this checklist to help us incorporate your contribution quickly and easily: - [ ] Make sure there is a [JIRA issue](https://issues.apache.org/jira/browse/SCB) filed for the change (usually before you start working on it). Trivial changes like typos do not require a JIRA issue. Your pull request should address just this issue, without pulling in other changes. - [ ] Each commit in the pull request should have a meaningful subject line and body. - [ ] Format the pull request title like `[SCB-XXX] Fixes bug in ApproximateQuantiles`, where you replace `SCB-XXX` with the appropriate JIRA issue. - [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why. - [ ] Run `mvn clean install` to make sure basic checks pass. A more thorough check will be performed on your pull request automatically. - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf). --- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-java-chassis] jinyule opened a new issue #1287: 客户端用服务端接口,返回体的PO类必须与服务端完全保持一致问题
jinyule opened a new issue #1287: 客户端用服务端接口,返回体的PO类必须与服务端完全保持一致问题 URL: https://github.com/apache/servicecomb-java-chassis/issues/1287 目前发现客户端用服务端接口,返回体的PO必须与服务端完全保持,尽管按json定义好了PO类,但仍会报强转失败 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-samples] 1360098430 opened a new pull request #24: CustomerManage service and UserCenter service initail version
1360098430 opened a new pull request #24: CustomerManage service and UserCenter service initail version URL: https://github.com/apache/servicecomb-samples/pull/24 @WillemJiang @yhs0092 the first commit of two of micro-services: CustomerManage and UserCenter This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-samples] 1360098430 closed pull request #23: CustomerManage service and UserCenter service initail version
1360098430 closed pull request #23: CustomerManage service and UserCenter service initail version URL: https://github.com/apache/servicecomb-samples/pull/23 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-samples] 1360098430 opened a new pull request #23: HouseCustomerManage service and UserCenter service initail versionrush
1360098430 opened a new pull request #23: HouseCustomerManage service and UserCenter service initail versionrush URL: https://github.com/apache/servicecomb-samples/pull/23 @WillemJiang @yhs0092 the first commit of two of micro-services: CustomerManage and UserCenter This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[servicecomb-website] branch asf-site updated: Publish the website
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/servicecomb-website.git The following commit(s) were added to refs/heads/asf-site by this push: new e612542 Publish the website e612542 is described below commit e612542c9912aec6000a80ed567b8f6216250f72 Author: Willem Jiang AuthorDate: Tue Aug 6 09:30:19 2019 +0800 Publish the website --- .../index.html | 18 +- .../distributed-tracing/index.html | 16 +- .../quick-start-advance/flow-control/index.html| 8 +- .../quick-start-advance/load-balance/index.html| 8 +- .../service-management/index.html | 8 +- content/cn/users/service-configurations/index.html | 192 ++--- .../distributed-tracing/index.html | 17 +- .../quick-start-advance/flow-control/index.html| 8 +- .../quick-start-advance/load-balance/index.html| 8 +- .../service-management/index.html | 8 +- content/feed.xml | 2 +- content/users/service-configurations/index.html| 191 ++-- 12 files changed, 112 insertions(+), 372 deletions(-) diff --git a/content/cn/docs/distributed-transactions-saga-implementation/index.html b/content/cn/docs/distributed-transactions-saga-implementation/index.html index 82141e3..a3e7b37 100644 --- a/content/cn/docs/distributed-transactions-saga-implementation/index.html +++ b/content/cn/docs/distributed-transactions-saga-implementation/index.html @@ -381,13 +381,18 @@ Saga分布式事务解决方案与实践 +本文为2018年QConBeijing Saga分布式事务解决方案与实践演讲实录。 +【2019年8月更新】目前我们的集中式的Saga解决方案ServiceComb已经发布了7版,去年底项目更名为 ServiceComb Pack,提供TCC的支持。大家可以访问我们项目的https://github.com/apache/servicecomb-pack;>github地址,获取到更多与项目相关的详细信息,欢迎大家为项目加星哦。 + -我先介绍一下我自己,我叫姜宁,来自于华为开源研究中心,现在负责的是ServiceComb这个开源项目。ServiceComb这个项目已经进到Apache孵化,应该是去年11月份时进到Apache孵化的,这个月我们帮刚发了1.0M1版,但对于SAGA来说我们属于探索的阶段,发布了0.1.0。 +我先介绍一下我自己,我叫姜宁,来自于华为开源能力中心,现在负责的是ServiceComb这个开源项目。ServiceComb这个项目已经进到Apache孵化,应该是去年11月份时进到Apache孵化的,这个月我们帮刚发了1.0M1版,但对于SAGA来说我们属于探索的阶段,发布了0.1.0。 我参与过Apache一些项目,我也是Apache的 Member,是Apache CXF, Apache Camel 还有的PMC。还有一件事情,前一段时间帮阿里同学孵化 RocketMQ,我是以导师的身份参与的,属于见习的Mentor.这回带着ServiceComb这个项目,我感觉我把很多角色都玩了一遍。后面如果大家对开源项目进入Apache孵化感兴趣的话也可以来找到。 +【2019年8月更新】最近发现Apache Camel的国内小伙伴越来越多, 有兴趣想加入的朋友可以给我发邮件 willem.jiang AT gmail. + 今天的议题围绕几个方面来展开,一个是微服务事务一致性的问题,然后讲一讲业界的SAGA解决方案,我们在ServiceComb里也提供了SAGA的实现。另外一件事情,我项目这边也在招新,欢迎广大感兴趣的同学一会儿加我微信。我们现在项目其实架子也都搭得不错了,基本功能都实现了,就是等着大家跳到碗里面,一起来解决微服务事务一致性问题。 @@ -557,9 +562,16 @@ 还有Omega需要解决多线程共享调用的问题。 -我们问题都列在下面的JIRA上面,大家可以通过这个https://issues.apache.org/jira/browse/SCB-333?jql=project%20%3D%20SCB%20AND%20status%20%3D%20Open%20AND%20fixVersion%20in%20(EMPTY%2C%20java-chassis-1.0.0-m2)%20AND%20labels%20%3D%20newbie">链接入门任务。 +【2019年8月更新】TCC的功能我们已经在https://github.com/apache/servicecomb-pack/releases/tag/0.3.0;>Pack 0.3.0中提供, 并且在 https://github.com/apache/servicecomb-pack/releases/tag/0.4.0;>Pack 0.4.0中提供了Alpha多活支持。现在开发的ServiceComb Pack 0.5.0 做了两个比较大的改进, 一个是在客户端(Omega)提供异步调用的支持, 一个是服务端(Alpha)采用状态机追踪服务的调用情况。 + +大家可以通过查看我们的https://github.com/apache/servicecomb-pack/blob/master/ROADMAP.md;>线路图, 或者通过https://gitter.im/ServiceCombUsers/Saga;>gitter与社区开发人员互动。 - +有关ServiceComb Pack交互的细节以及相关的架构设计,大家可以参考下面两篇文章: + + http://servicecomb.apache.org/cn/docs/distributed-transaction-of-services-1/;>基于服务的分布式事务(上篇) + http://servicecomb.apache.org/cn/docs/distributed-transaction-of-services-2/;>基于服务的分布式事务(下篇) + + 简单小节一下,我们对事务一致性做了简单的回顾,业界的SAGA解决方案也提了一下,简单介绍一下ServiceComb的Saga实现,以及我们后续的开发计划。 diff --git a/content/cn/docs/quick-start-advance/distributed-tracing/index.html b/content/cn/docs/quick-start-advance/distributed-tracing/index.html index 2bac60c..2b37936 100644 --- a/content/cn/docs/quick-start-advance/distributed-tracing/index.html +++ b/content/cn/docs/quick-start-advance/distributed-tracing/index.html @@ -420,14 +420,26 @@ 重启 体质指数计算器 微服务: -mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider" +#spring-boot-maven-plugin 1.x +mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider" + + +or +#spring-boot-maven-plugin 2.x + mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider" 重启 体质指数界面 微服务: -mvn spring-boot:run -Drun.jvmArguments="-Dservicecomb.tracing.enabled=true" +#spring-boot-maven-plugin 1.x +mvn spring-boot:run -Drun.jvmArguments="-Dservicecomb.tracing.enabled=true" + + +or +#spring-boot-maven-plugin 2.x +mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dservicecomb.tracing.enabled=true" diff --git a/content/cn/docs/quick-start-advance/flow-control/index.html
[servicecomb-website] 01/01: Merge branch 'master' into asf-site
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/servicecomb-website.git commit b38d195c6d85830a63394d60356e955db4d43993 Merge: c2ecea7 2f451f1 Author: Willem Jiang AuthorDate: Tue Aug 6 09:15:24 2019 +0800 Merge branch 'master' into asf-site _docs/cn/distributed-tracing.md| 12 + _docs/cn/flow-control.md | 6 +++ _docs/cn/load-balance.md | 6 +++ _docs/cn/service-management.md | 6 +++ _docs/distributed-tracing.md | 15 ++ _docs/flow-control.md | 6 +++ _docs/load-balance.md | 6 +++ _docs/service-management.md| 6 +++ .../cn/2018-04-26-distributed-transactions-saga.md | 17 -- _users/cn/service-configurations.md| 60 +- _users/service-configurations.md | 59 + 11 files changed, 79 insertions(+), 120 deletions(-)
[servicecomb-website] branch master updated (3c0bba6 -> 2f451f1)
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-website.git. from 3c0bba6 SCB-1413 update the outdated loadbalance docs links add 2f451f1 Update the status of ServiceComb Pack project No new revisions were added by this update. Summary of changes: _posts/cn/2018-04-26-distributed-transactions-saga.md | 17 ++--- 1 file changed, 14 insertions(+), 3 deletions(-)
[servicecomb-website] branch asf-site updated (c2ecea7 -> b38d195)
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a change to branch asf-site in repository https://gitbox.apache.org/repos/asf/servicecomb-website.git. from c2ecea7 publish the website add 6f576c0 SCB-1390 add springboot maven plugin 2.x support -Dspring-boot.run.jvmArguments add 3c0bba6 SCB-1413 update the outdated loadbalance docs links add 2f451f1 Update the status of ServiceComb Pack project new b38d195 Merge branch 'master' into asf-site The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: _docs/cn/distributed-tracing.md| 12 + _docs/cn/flow-control.md | 6 +++ _docs/cn/load-balance.md | 6 +++ _docs/cn/service-management.md | 6 +++ _docs/distributed-tracing.md | 15 ++ _docs/flow-control.md | 6 +++ _docs/load-balance.md | 6 +++ _docs/service-management.md| 6 +++ .../cn/2018-04-26-distributed-transactions-saga.md | 17 -- _users/cn/service-configurations.md| 60 +- _users/service-configurations.md | 59 + 11 files changed, 79 insertions(+), 120 deletions(-) mode change 100644 => 100755 _docs/cn/distributed-tracing.md mode change 100644 => 100755 _docs/cn/flow-control.md mode change 100644 => 100755 _docs/cn/service-management.md mode change 100644 => 100755 _docs/distributed-tracing.md mode change 100644 => 100755 _docs/flow-control.md mode change 100644 => 100755 _docs/service-management.md
[servicecomb-pack] 16/38: SCB-1369 Add paging query event list method and single event query method for APIs
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit a888641e1fafd6e1a89742dd2e2e7f85bd5b1670 Author: Lei Zhang AuthorDate: Fri Jul 26 18:41:51 2019 +0800 SCB-1369 Add paging query event list method and single event query method for APIs --- .../fsm/repository/NoneTransactionRepository.java | 11 +++ .../fsm/repository/TransactionRepository.java | 7 ++ .../ElasticsearchTransactionRepository.java| 99 -- .../pack/alpha/server/api/APIControllerV1.java | 24 ++ 4 files changed, 135 insertions(+), 6 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java index c0cc566..9cd6d1e 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java @@ -19,6 +19,7 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import java.lang.invoke.MethodHandles; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,4 +31,14 @@ public class NoneTransactionRepository implements TransactionRepository { public void send(GloablTransaction transaction) { LOG.warn("Please configure alpha.feature.akka.transaction.repository.type=elasticsearch to use elasticsearch to persist transaction data."); } + + @Override + public GloablTransaction getGloablTransactionByGlobalTxId(String globalTxId){ +throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); + } + + @Override + public PagingGloablTransactions getGloablTransactions(int page, int size) throws Exception { +throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); + } } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java index 1916354..472aabc 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java @@ -18,8 +18,15 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; public interface TransactionRepository { void send(GloablTransaction transaction) throws Exception; + + GloablTransaction getGloablTransactionByGlobalTxId(String globalTxId) + throws Exception; + + PagingGloablTransactions getGloablTransactions(int page, int size) + throws Exception; } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java index b7dc0a1..ef62b18 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java @@ -19,22 +19,38 @@ package org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchHit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; +import
[servicecomb-pack] 21/38: SCB-1369 rebase
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 7b7e1d37c811b8abfb4d5879a480d3feb44f610c Author: Lei Zhang AuthorDate: Fri Jul 26 21:59:27 2019 +0800 SCB-1369 rebase --- docs/fsm/how_to_use_fsm_zh.md | 552 -- docs/user_guide.md| 8 +- docs/user_guide_zh.md | 8 +- 3 files changed, 331 insertions(+), 237 deletions(-) diff --git a/docs/fsm/how_to_use_fsm_zh.md b/docs/fsm/how_to_use_fsm_zh.md index 6c7909e..d5da9b8 100644 --- a/docs/fsm/how_to_use_fsm_zh.md +++ b/docs/fsm/how_to_use_fsm_zh.md @@ -2,18 +2,27 @@ ## 快速开始 -使用 `alpha.feature.akka.enabled=true` 开启状态机模式 +* 启动 Alpha + 使用 `alpha.feature.akka.enabled=true` 开启状态机模式 -```bash -java -jar alpha-server-${version}-exec.jar \ - --spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false - --spring.datasource.username=saga-user - --spring.datasource.password=saga-password - --spring.profiles.active=prd - --alpha.feature.akka.enabled=true -``` + ```bash + java -jar alpha-server-${version}-exec.jar \ +--spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false \ +--spring.datasource.username=saga-user \ +--spring.datasource.password=saga-password \ +--spring.profiles.active=prd \ +--alpha.feature.akka.enabled=true + ``` + +* Omega 侧配置 + + 使用 `alpha.feature.akka.enabled=true` 开启状态机模式 + + ```base + alpha.feature.akka.enabled=true + ``` -**注意:**状态机模式默认没有存储执行完毕的事务数据,如果想存储执行后的事务数据请看使用 Elasticsearch 存储终止的全局事务数据章节 +**注意:**状态机模式默认没有存储执行完毕的事务数据,如果想存储执行后的事务数据请参考 "使用 Elasticsearch 存储终止的全局事务数据章节" ## Alpha 事件通道类型 @@ -27,7 +36,8 @@ Alpha 收到 Omeag 发送的事件后放入事件通道等待Akka处理,默认 **注意:** activemq, kafka, redis 还未实现 0_0 -## 性能度量 +## Alpha APIs + 性能度量 Alpha 提供一个性能度量查询API,使用这个查询接口可以返回当前事务各个环节性能指标,你可以使用基准测试工具 `AlphaBenchmark` 模拟发送数据后查看性能指标。 @@ -90,247 +100,319 @@ curl http://localhost:8090/alpha/api/v1/metrics * repositoryRejected: 存储模块拒绝的全局事务数量 * repositoryAvgTime: 平均耗时(毫秒) -## 使用 Elasticsearch 存储终止的全局事务数据 - -> 只有终止的全局事务才会存储到 Elasticsearch 中,终止的全局事务包含正常终止或者挂起终止两种情况,执行中的全局事务需要通过调用 Alpha RESTfulAPI 进行查询 + 事务数据查询 -使用 docker 启动一个 Elasticsearch 服务,如果你已经有 Elasticsearch 服务请忽略这个步骤 +> 需要启动 Elasticsearch 存储事务 -```bash -docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.6.2 -``` - -启动 Alpha 的时候配置 Elasticsearch 参数 - -```bash -java -jar alpha-server-${version}-exec.jar \ - --spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false - --spring.datasource.username=saga-user - --spring.datasource.password=saga-password - --spring.profiles.active=prd - --alpha.feature.akka.enabled=true - --alpha.feature.akka.transaction.repository.type=elasticsearch - --spring.data.elasticsearch.cluster-name=docker-cluster - --spring.data.elasticsearch.cluster-nodes=localhost:9300 - --spring.elasticsearch.rest.uris=http://localhost:9200 -``` -| 参数名 | 默认值 | 说明 | -| | -- | | -| alpha.feature.akka.transaction.repository.type || 持久化类型,目前可选值 elasticsearch,如果不设置则不存储 | -| alpha.feature.akka.transaction.repository.elasticsearch.memory.size | -1 | 持久化数据队列,默认 Integer.MAX. Actor会将终止的事务数据放入此队列,并等待存入elasticsearch | -| alpha.feature.akka.transaction.repository.elasticsearch.batchSize | 100| elasticsearch 批量入库数量 | -| alpha.feature.akka.transaction.repository.elasticsearch.refreshTime | 5000 | elasticsearch 定时同步到ES时间 | -| spring.data.elasticsearch.cluster-name || ES集群名称 | -| spring.data.elasticsearch.cluster-nodes || ES节点地址,格式:localhost:9300,多个地址逗号分隔 | -| spring.elasticsearch.rest.uris || ES rest访问地址,格式:http://localhost:9200 | - -使用 Elasticsearch APIs 查询事务 -Alpha 会在 Elasticsearch 中创建一个名为 `alpha_global_transaction` 的索引,你可以使用以下方法查询事务数据 - -查询所有事务 - -```bash -curl http://localhost:9200/alpha_global_transaction/_search -``` +* 查询事务列表 -查询匹配 globalTxId 的事务 + ```bash + curl -X GET http://localhost:8090/alpha/api/v1/transaction?page=0=50 + + { +"total": 2002, +"page": 0, +"size": 50, +"elapsed": 581, +"gloablTransactions": [...] + } + ``` + + 请求参数 + + * page 页号 + + * size 返回行树 + + 返回参数 + + * total 总行数 + * page 本次查询结果页号 + * size 本次查询行数 + * elapsed 本次查询耗时(毫秒) + * gloablTransactions 事件数据列表 + +* 查询一条事务 + + ```bash + curl -X GET http://localhost:8090/alpha/api/v1/transaction/{globalTxId} + + { +"globalTxId":
[servicecomb-pack] 23/38: SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 1fe0bd2472fd8c09c7026be0e4b3f908af93 Author: Lei Zhang AuthorDate: Thu Jul 18 14:36:34 2019 +0800 SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped --- .../org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java index b9a144e..3378260 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java @@ -69,7 +69,7 @@ import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; @ConditionalOnProperty(value = {"alpha.feature.akka.enabled"}) public class FsmAutoConfiguration { - @Value("${alpha.feature.akka.channel.memory.size:-1}") + @Value("${alpha.feature.akka.elasticsearch.memory.size:-1}") int memoryEventChannelMemorySize; @Value("${alpha.feature.akka.transaction.repository.elasticsearch.batchSize:100}")
[servicecomb-pack] 31/38: SCB-1369 Add unit test cases for APIControllerV1
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit b78efa78608b3d8d5dbbdebb871390ec3a322dce Author: Lei Zhang AuthorDate: Sat Aug 3 00:08:22 2019 +0800 SCB-1369 Add unit test cases for APIControllerV1 --- .../fsm/repository/model/GlobalTransaction.java| 3 + .../fsm/repository/model/SagaSubTransaction.java | 3 + .../alpha/server/api/APIControllerV1Tests.java | 310 + 3 files changed, 316 insertions(+) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GlobalTransaction.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GlobalTransaction.java index 8ec31c4..28b4165 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GlobalTransaction.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GlobalTransaction.java @@ -17,6 +17,7 @@ package org.apache.servicecomb.pack.alpha.fsm.repository.model; +import com.fasterxml.jackson.annotation.JsonFormat; import java.util.ArrayList; import java.util.Date; import java.util.LinkedList; @@ -31,7 +32,9 @@ public class GlobalTransaction { private TransactionType type; private String serviceName; private String instanceId; + @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date beginTime; + @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date endTime; private SagaActorState state; private Integer subTxSize; diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/SagaSubTransaction.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/SagaSubTransaction.java index a70585e..0c07f35 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/SagaSubTransaction.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/SagaSubTransaction.java @@ -17,13 +17,16 @@ package org.apache.servicecomb.pack.alpha.fsm.repository.model; +import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import org.apache.servicecomb.pack.alpha.fsm.TxState; public class SagaSubTransaction { private String localTxId; private String parentTxId; + @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date beginTime; + @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date endTime; private TxState state; private Long durationTime; diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java new file mode 100644 index 000..e4914b2 --- /dev/null +++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java @@ -0,0 +1,310 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.pack.alpha.server.api; + +import static org.hamcrest.Matchers.hasSize; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonGenerator.Feature; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; +import org.apache.servicecomb.pack.alpha.core.NodeStatus; +import org.apache.servicecomb.pack.alpha.core.NodeStatus.TypeEnum; +import org.apache.servicecomb.pack.alpha.fsm.SagaActorState; +import org.apache.servicecomb.pack.alpha.fsm.TransactionType; +import org.apache.servicecomb.pack.alpha.fsm.TxState; +import org.apache.servicecomb.pack.alpha.fsm.event.SagaEndedEvent; +import
[servicecomb-pack] 22/38: SCB-1369 Test APIs adds prefix /test
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit e7a43a44b870ebffbd5e654884daf8c3c7540cee Author: Lei Zhang AuthorDate: Fri Jul 26 19:45:03 2019 +0800 SCB-1369 Test APIs adds prefix /test --- .../src/test/java/org/apache/servicecomb/pack/PackStepdefs.java | 6 -- .../servicecomb/pack/alpha/server/fsm/FsmSagaDataController.java| 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java index 9c6a194..c66e46f 100644 --- a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java +++ b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java @@ -56,6 +56,8 @@ public class PackStepdefs implements En { private static final Map submits = new HashMap<>(); public PackStepdefs() { +String[] globalTxId = new String[1]; + Given("^Car Service is up and running$", () -> { probe(System.getProperty(CAR_SERVICE_ADDRESS)); }); @@ -102,7 +104,7 @@ public class PackStepdefs implements En { map.keySet().retainAll(dataTable.topCells()); }; - dataMatches(System.getProperty(ALPHA_REST_ADDRESS) + "/saga/akka/events/last", dataTable, columnStrippingConsumer); + dataMatches(System.getProperty(ALPHA_REST_ADDRESS) + "/test/saga/akka/events/last", dataTable, columnStrippingConsumer); }); And("^Car Service contains the following booking orders$", (DataTable dataTable) -> { @@ -127,7 +129,7 @@ public class PackStepdefs implements En { given() .when() -.delete(System.getProperty(ALPHA_REST_ADDRESS) + "/saga/akka/events") +.delete(System.getProperty(ALPHA_REST_ADDRESS) + "/test/saga/akka/events") .then() .statusCode(is(200)); diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/FsmSagaDataController.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/FsmSagaDataController.java index 3e28e42..88a635c 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/FsmSagaDataController.java +++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/FsmSagaDataController.java @@ -44,7 +44,7 @@ import org.springframework.web.bind.annotation.RequestMapping; @EnableKamon @Controller -@RequestMapping("/saga/akka") +@RequestMapping("/test/saga/akka") @Profile("test") @ConditionalOnProperty(name= "alpha.feature.akka.enabled", havingValue = "true") // Only export this Controller for test @@ -59,7 +59,7 @@ class FsmSagaDataController { ResponseEntity> events() { LOG.info("Get the events request"); List eventVos = new LinkedList<>(); -SagaData data = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); +SagaData data = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); data.getEvents().forEach(event -> { Map obj = new HashMap(); obj.put("serviceName",event.getServiceName()); @@ -75,7 +75,6 @@ class FsmSagaDataController { @Trace("deleteEvents") @DeleteMapping("/events") ResponseEntity clear() { -SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).clearSagaData(); return ResponseEntity.ok("All events deleted"); }
[servicecomb-pack] 29/38: SCB-1369 Add license header
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit c19ef0c99e3af2fab818385a19e03d13ef5c13da Author: Lei Zhang AuthorDate: Fri Aug 2 12:44:11 2019 +0800 SCB-1369 Add license header --- .../fsm/repository/model/PagingGloablTransactions.java | 17 + 1 file changed, 17 insertions(+) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java index 741cdbe..980a886 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.servicecomb.pack.alpha.fsm.repository.model; import java.util.List;
[servicecomb-pack] 38/38: SCB-1369 Modify warning message
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 958e59735376b3b13d600f90a889265500628b4c Author: Lei Zhang AuthorDate: Mon Aug 5 16:17:53 2019 +0800 SCB-1369 Modify warning message --- .../pack/alpha/fsm/repository/NoneTransactionRepository.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java index fac9cd2..a50bd47 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java @@ -29,7 +29,7 @@ public class NoneTransactionRepository implements TransactionRepository { @Override public void send(GlobalTransaction transaction) { -LOG.warn("Please configure alpha.feature.akka.transaction.repository.type=elasticsearch to use elasticsearch to persist transaction data."); +LOG.warn("NoneTransactionRepostory is set"); } @Override
[servicecomb-pack] 26/38: SCB-1369 Fixed typo Global
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 398056424bd644bfc010648baa3d84b396c425a5 Author: Lei Zhang AuthorDate: Sun Jul 28 19:30:13 2019 +0800 SCB-1369 Fixed typo Global --- .../AbstractTransactionRepositoryChannel.java | 6 ++--- .../fsm/repository/NoneTransactionRepository.java | 6 ++--- .../fsm/repository/TransactionRepository.java | 6 ++--- .../repository/TransactionRepositoryChannel.java | 4 +-- .../MemoryTransactionRepositoryChannel.java| 14 +- .../ElasticsearchTransactionRepository.java| 14 +- .../elasticsearch/GloablTransactionDocument.java | 4 +-- ...oablTransaction.java => GlobalTransaction.java} | 30 +++--- .../repository/model/PagingGloablTransactions.java | 14 +- .../spring/integration/akka/SagaDataExtension.java | 4 +-- .../ElasticsearchTransactionRepositoryTest.java| 8 +++--- .../pack/alpha/server/api/APIControllerV1.java | 8 +++--- docs/fsm/how_to_use_fsm_zh.md | 4 +-- 13 files changed, 61 insertions(+), 61 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java index 92ed257..01727d2 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java @@ -18,14 +18,14 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; -import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; public abstract class AbstractTransactionRepositoryChannel implements TransactionRepositoryChannel { protected final MetricsService metricsService; protected final TransactionRepository repository; - public abstract void sendTo(GloablTransaction transaction); + public abstract void sendTo(GlobalTransaction transaction); public AbstractTransactionRepositoryChannel( TransactionRepository repository, @@ -34,7 +34,7 @@ public abstract class AbstractTransactionRepositoryChannel implements Transactio this.metricsService = metricsService; } - public void send(GloablTransaction transaction) { + public void send(GlobalTransaction transaction) { this.sendTo(transaction); } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java index 9cd6d1e..e40629f 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java @@ -18,7 +18,7 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import java.lang.invoke.MethodHandles; -import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,12 +28,12 @@ public class NoneTransactionRepository implements TransactionRepository { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Override - public void send(GloablTransaction transaction) { + public void send(GlobalTransaction transaction) { LOG.warn("Please configure alpha.feature.akka.transaction.repository.type=elasticsearch to use elasticsearch to persist transaction data."); } @Override - public GloablTransaction getGloablTransactionByGlobalTxId(String globalTxId){ + public GlobalTransaction getGloablTransactionByGlobalTxId(String globalTxId){ throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java index 472aabc..7e81fc7 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java @@ -17,14 +17,14
[servicecomb-pack] 17/38: SCB-1369 Clean up memory data after persisting data to ES
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit b54421e855f2590a646472de15943481788a017e Author: Lei Zhang AuthorDate: Fri Jul 26 19:08:00 2019 +0800 SCB-1369 Clean up memory data after persisting data to ES --- .../spring/integration/akka/SagaDataExtension.java | 63 +++ .../servicecomb/pack/alpha/fsm/SagaActorTest.java | 33 +- .../pack/alpha/fsm/SagaIntegrationTest.java| 73 +++--- 3 files changed, 64 insertions(+), 105 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java index 5354f21..dbf7425 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java @@ -39,8 +39,6 @@ public class SagaDataExtension extends AbstractExtensionId { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); public static final SagaDataExtension SAGA_DATA_EXTENSION_PROVIDER = new SagaDataExtension(); - //TODO We could use test profile the enable this kind feature - public static boolean autoCleanSagaDataMap = true; // Only for Test @Override public SagaDataExt createExtension(ExtendedActorSystem system) { @@ -48,30 +46,18 @@ public class SagaDataExtension extends AbstractExtensionId { } public static class SagaDataExt implements Extension { - +private SagaData lastSagaData; private final ConcurrentHashMap sagaDataMap = new ConcurrentHashMap(); -private String lastGlobalTxId; -private CleanMemForTest cleanMemForTest = new CleanMemForTest(sagaDataMap); private MetricsService metricsService; private TransactionRepositoryChannel repositoryChannel; -public SagaDataExt() { - // Just to avoid the overflow of the OldGen for stress testing - // Delete after SagaData persistence - if (autoCleanSagaDataMap) { -new Thread(cleanMemForTest).start(); - } -} - public void putSagaData(String globalTxId, SagaData sagaData) { - lastGlobalTxId = globalTxId; sagaDataMap.put(globalTxId, sagaData); + lastSagaData = sagaData; } public void stopSagaData(String globalTxId, SagaData sagaData) { - // TODO save SagaDate to database and clean sagaDataMap this.putSagaData(globalTxId, sagaData); - lastGlobalTxId = globalTxId; if (sagaData.getLastState() == SagaActorState.COMMITTED) { this.metricsService.metrics().doCommitted(); } else if (sagaData.getLastState() == SagaActorState.COMPENSATED) { @@ -102,22 +88,17 @@ public class SagaDataExtension extends AbstractExtensionId { .events(sagaData.getEvents()) .build(); repositoryChannel.send(record); + sagaDataMap.remove(globalTxId); } -public SagaData getSagaData(String globalTxId) { - // TODO If globalTxId does not exist in sagaDataMap then - // load from the database - return sagaDataMap.get(globalTxId); +// Only for Test +public SagaData getLastSagaDate() { + return lastSagaData; } -// Only test -public void clearSagaData() { - lastGlobalTxId = null; - sagaDataMap.clear(); -} - -public SagaData getLastSagaData() { - return getSagaData(lastGlobalTxId); +// Only for Test +public void cleanLastSagaData() { + lastSagaData = null; } public void doSagaBeginCounter() { @@ -142,30 +123,4 @@ public class SagaDataExtension extends AbstractExtensionId { this.repositoryChannel = repositoryChannel; } } - - static class CleanMemForTest implements Runnable { - -final ConcurrentHashMap sagaDataMap; - -public CleanMemForTest(ConcurrentHashMap sagaDataMap) { - this.sagaDataMap = sagaDataMap; -} - -@Override -public void run() { - while (true) { -try { - sagaDataMap.clear(); -} catch (Exception e) { - LOG.error(e.getMessage(), e); -} finally { - try { -Thread.sleep(1); - } catch (InterruptedException e) { -LOG.error(e.getMessage(), e); - } -} - } -} - } } diff --git a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java index 198ebf4..94e30a3 100644 --- a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java +++
[servicecomb-pack] 34/38: SCB-1369 Fixed typo
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 166e696272708690b29a3500b96321fb72964570 Author: Lei Zhang AuthorDate: Sat Aug 3 03:26:34 2019 +0800 SCB-1369 Fixed typo --- docs/user_guide.md| 2 +- docs/user_guide_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 60446d7..791b08a 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -792,4 +792,4 @@ Alpha can be highly available by deploying multiple instances, enable cluster su ## Experiment -[Alpha State Machine Mode](fsm/how_to_use_fsm_zh.md) \ No newline at end of file +[Alpha State Machine Mode](fsm/how_to_use_fsm.md) \ No newline at end of file diff --git a/docs/user_guide_zh.md b/docs/user_guide_zh.md index 4c5e5d1..9bcbd44 100644 --- a/docs/user_guide_zh.md +++ b/docs/user_guide_zh.md @@ -778,4 +778,4 @@ Alpha 可以通过部署多实例的方式保证高可用,使用 `alpha.cluste ## 实验 -[Alpha 状态机模式](fsm/how_to_use_fsm_zh.md) +[Alpha 状态机模式](fsm/how_to_use_fsm_zh.md) \ No newline at end of file
[servicecomb-pack] 20/38: SCB-1369 Change @Autowired TransactionRepository required is false for Unit Tests
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 37b44cd6a2a5eb11519c5d452493ad9893338dd9 Author: Lei Zhang AuthorDate: Fri Jul 26 19:12:17 2019 +0800 SCB-1369 Change @Autowired TransactionRepository required is false for Unit Tests --- .../org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java index 0c0481e..336b710 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java +++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java @@ -36,7 +36,7 @@ public class APIControllerV1 { @Autowired AlphaMetrics AlphaMetrics; - @Autowired + @Autowired(required = false) TransactionRepository transactionRepository; @GetMapping(value = "/metrics")
[servicecomb-pack] 28/38: SCB-1369 Fixed typo
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 8a55243fda762f948502645a7d0db68a2f794e18 Author: Lei Zhang AuthorDate: Mon Jul 29 16:57:16 2019 +0800 SCB-1369 Fixed typo --- .../spring/integration/akka/SagaDataExtension.java | 2 +- .../servicecomb/pack/alpha/fsm/SagaActorTest.java | 26 - .../pack/alpha/fsm/SagaIntegrationTest.java| 48 - .../alpha/server/fsm/FsmSagaDataController.java| 2 +- .../alpha/server/fsm/AlphaIntegrationFsmTest.java | 62 +++--- 5 files changed, 70 insertions(+), 70 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java index f4b8e3a..b741453 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/spring/integration/akka/SagaDataExtension.java @@ -92,7 +92,7 @@ public class SagaDataExtension extends AbstractExtensionId { } // Only for Test -public SagaData getLastSagaDate() { +public SagaData getLastSagaData() { return lastSagaData; } diff --git a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java index 94e30a3..c09b416 100644 --- a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java +++ b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java @@ -171,7 +171,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), saga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId); assertEquals(sagaData.getTxEntityMap().size(), 3); sagaData.getTxEntityMap().forEach((k, v) -> { @@ -259,7 +259,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), recoveredSaga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId); assertEquals(sagaData.getTxEntityMap().size(), 3); sagaData.getTxEntityMap().forEach((k, v) -> { @@ -311,7 +311,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), saga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId); assertEquals(sagaData.getTxEntityMap().size(), 1); assertEquals(sagaData.getTxEntityMap().get(localTxId_1).getState(), TxState.FAILED); @@ -373,7 +373,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), saga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId); assertEquals(sagaData.getTxEntityMap().size(), 2); assertEquals(sagaData.getTxEntityMap().get(localTxId_1).getState(), TxState.COMPENSATED); @@ -446,7 +446,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), saga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId); assertEquals(sagaData.getTxEntityMap().size(), 3); assertEquals(sagaData.getTxEntityMap().get(localTxId_1).getState(), TxState.COMPENSATED); @@ -519,7 +519,7 @@ public class SagaActorTest { Terminated terminated = expectMsgClass(Terminated.class); assertEquals(terminated.getActor(), saga); - SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); + SagaData sagaData = SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaData(); assertEquals(sagaData.getGlobalTxId(), globalTxId);
[servicecomb-pack] 37/38: SCB-1369 Add License header
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 5ab27e84646c3dcd7e45eaee9957d1262239f11f Author: Lei Zhang AuthorDate: Mon Aug 5 16:15:39 2019 +0800 SCB-1369 Add License header --- .../elasticsearch/GlobalTransactionDocument.java| 17 + 1 file changed, 17 insertions(+) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java index 47c25d9..ebd542f 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction;
[servicecomb-pack] 15/38: SCB-1369 Attribute events type changed to Map for deserialize the JSON
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 3ca881230aabf07d7434924d6fbea51396fb52f1 Author: Lei Zhang AuthorDate: Fri Jul 26 18:39:26 2019 +0800 SCB-1369 Attribute events type changed to Map for deserialize the JSON --- .../pack/alpha/fsm/repository/model/GloablTransaction.java | 13 ++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GloablTransaction.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GloablTransaction.java index 045ec98..f0572a2 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GloablTransaction.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/GloablTransaction.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.LinkedList; import java.util.List; +import java.util.Map; import org.apache.servicecomb.pack.alpha.fsm.SagaActorState; import org.apache.servicecomb.pack.alpha.fsm.TransactionType; import org.apache.servicecomb.pack.alpha.fsm.event.base.BaseEvent; @@ -36,7 +37,7 @@ public class GloablTransaction { private Integer subTxSize; private Long durationTime; private List subTransactions = new ArrayList<>(); - private List events = new LinkedList<>(); + private List> events = new LinkedList<>(); public String getGlobalTxId() { return globalTxId; @@ -78,7 +79,7 @@ public class GloablTransaction { return subTransactions; } - public List getEvents() { + public List> getEvents() { return events; } @@ -164,7 +165,13 @@ public class GloablTransaction { gloablTransaction.subTxSize = this.subTxSize; gloablTransaction.durationTime = this.endTime.getTime() - this.beginTime.getTime(); gloablTransaction.subTransactions = this.subTransactions; - gloablTransaction.events = this.events; + for(BaseEvent event : events){ +try { + gloablTransaction.events.add(event.toMap()); +} catch (Exception e) { + new RuntimeException(e.getMessage(),e); +} + } return gloablTransaction; } }
[servicecomb-pack] 33/38: SCB-1369 Modify APIs to return JSON date format to long
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit c9651fc346562f49db732d9d03f6e949032f4f69 Author: Lei Zhang AuthorDate: Sat Aug 3 00:25:21 2019 +0800 SCB-1369 Modify APIs to return JSON date format to long --- docs/fsm/how_to_use_fsm.md| 4 ++-- docs/fsm/how_to_use_fsm_zh.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/fsm/how_to_use_fsm.md b/docs/fsm/how_to_use_fsm.md index 7a5fd5b..a0c61da 100644 --- a/docs/fsm/how_to_use_fsm.md +++ b/docs/fsm/how_to_use_fsm.md @@ -137,8 +137,8 @@ description "type": "SAGA", "serviceName": "alpha-benchmark", "instanceId": "alpha-benchmark-127.0.0.1", -"beginTime": "2019-07-26T07:46:27.215+", -"endTime": "2019-07-26T07:46:27.623+", +"beginTime": 1564762932963, +"endTime": 1564762933197, "state": "COMMITTED", "subTxSize": 3, "durationTime": 408, diff --git a/docs/fsm/how_to_use_fsm_zh.md b/docs/fsm/how_to_use_fsm_zh.md index 4bf743b..9e0ab71 100644 --- a/docs/fsm/how_to_use_fsm_zh.md +++ b/docs/fsm/how_to_use_fsm_zh.md @@ -143,8 +143,8 @@ curl http://localhost:8090/alpha/api/v1/metrics "type": "SAGA", "serviceName": "alpha-benchmark", "instanceId": "alpha-benchmark-127.0.0.1", -"beginTime": "2019-07-26T07:46:27.215+", -"endTime": "2019-07-26T07:46:27.623+", +"beginTime": 1564762932963, +"endTime": 1564762933197, "state": "COMMITTED", "subTxSize": 3, "durationTime": 408,
[servicecomb-pack] 27/38: SCB-1369 Fixed conflict
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit ceec64bb7115d4061a0e99b82bc96b8404fd7196 Author: Lei Zhang AuthorDate: Sun Jul 28 19:38:07 2019 +0800 SCB-1369 Fixed conflict --- docs/user_guide.md| 9 +++-- docs/user_guide_zh.md | 4 +--- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 44eb353..60446d7 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -786,13 +786,10 @@ Alpha instance can register to the discovery service, Omega obtains Alpha's inst Alpha can be highly available by deploying multiple instances, enable cluster support with the `alpha.cluster.master.enabled=true` parameter. -<<< HEAD - - [src-TransactionClientHttpRequestInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java [src-TransactionHandlerInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionHandlerInterceptor.java -=== + + ## Experiment -[Alpha State Machine Mode](fsm/how_to_use_fsm_zh.md) ->>> 2af60216... SCB-1369 Update FSM documents +[Alpha State Machine Mode](fsm/how_to_use_fsm_zh.md) \ No newline at end of file diff --git a/docs/user_guide_zh.md b/docs/user_guide_zh.md index 88bd429..4c5e5d1 100644 --- a/docs/user_guide_zh.md +++ b/docs/user_guide_zh.md @@ -773,11 +773,9 @@ public void bar(BarCommandWithTxContext cmdWithTxContext) { Alpha 可以通过部署多实例的方式保证高可用,使用 `alpha.cluster.master.enabled=true` 参数开启集群支持 -<<< HEAD [src-TransactionClientHttpRequestInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java [src-TransactionHandlerInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionHandlerInterceptor.java -=== + ## 实验 [Alpha 状态机模式](fsm/how_to_use_fsm_zh.md) ->>> 2af60216... SCB-1369 Update FSM documents
[servicecomb-pack] 35/38: SCB-1369 Fixed transaction typo
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 131eb8386b850337d5c407a44e93468185fd1082 Author: Lei Zhang AuthorDate: Sat Aug 3 03:43:14 2019 +0800 SCB-1369 Fixed transaction typo --- .../org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java index b9a144e..17cb647 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java @@ -201,13 +201,13 @@ public class FsmAutoConfiguration { @Bean @ConditionalOnMissingBean(TransactionRepository.class) - public TransactionRepository transcationRepository() { + public TransactionRepository transactionRepository() { return new NoneTransactionRepository(); } @Bean @ConditionalOnProperty(value = "alpha.feature.akka.transaction.repository.type", havingValue = "elasticsearch") - public TransactionRepository transcationRepository(MetricsService metricsService, + public TransactionRepository transactionRepository(MetricsService metricsService, ElasticsearchTemplate template) { return new ElasticsearchTransactionRepository(template, metricsService, repositoryElasticsearchBatchSize, repositoryElasticsearchRefreshTime);
[servicecomb-pack] 36/38: SCB-1369 Fixed global typo
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 4130d60488a314114c3aea6614c3c53ec6d0baa1 Author: Lei Zhang AuthorDate: Sat Aug 3 03:48:26 2019 +0800 SCB-1369 Fixed global typo --- .../fsm/repository/NoneTransactionRepository.java | 4 +-- .../fsm/repository/TransactionRepository.java | 4 +-- .../MemoryTransactionRepositoryChannel.java| 4 +-- .../ElasticsearchTransactionRepository.java| 32 +++--- ...ocument.java => GlobalTransactionDocument.java} | 2 +- .../repository/model/PagingGlobalTransactions.java | 2 +- .../pack/alpha/server/api/APIControllerV1.java | 4 +-- .../alpha/server/api/APIControllerV1Tests.java | 6 ++-- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java index f18f8ed..fac9cd2 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java @@ -33,12 +33,12 @@ public class NoneTransactionRepository implements TransactionRepository { } @Override - public GlobalTransaction getGloablTransactionByGlobalTxId(String globalTxId){ + public GlobalTransaction getGlobalTransactionByGlobalTxId(String globalTxId){ throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); } @Override - public PagingGlobalTransactions getGloablTransactions(int page, int size) throws Exception { + public PagingGlobalTransactions getGlobalTransactions(int page, int size) throws Exception { throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); } } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java index 8079462..463ff59 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java @@ -24,9 +24,9 @@ public interface TransactionRepository { void send(GlobalTransaction transaction) throws Exception; - GlobalTransaction getGloablTransactionByGlobalTxId(String globalTxId) + GlobalTransaction getGlobalTransactionByGlobalTxId(String globalTxId) throws Exception; - PagingGlobalTransactions getGloablTransactions(int page, int size) + PagingGlobalTransactions getGlobalTransactions(int page, int size) throws Exception; } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/channel/MemoryTransactionRepositoryChannel.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/channel/MemoryTransactionRepositoryChannel.java index 8a143eb..abc5add 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/channel/MemoryTransactionRepositoryChannel.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/channel/MemoryTransactionRepositoryChannel.java @@ -37,7 +37,7 @@ public class MemoryTransactionRepositoryChannel extends AbstractTransactionRepos super(repository, metricsService); this.size = size > 0 ? size : Integer.MAX_VALUE; globalTransactionQueue = new LinkedBlockingQueue(this.size); -new Thread(new GloablTransactionConsumer(), "MemoryTransactionRepositoryChannel").start(); +new Thread(new GlobalTransactionConsumer(), "MemoryTransactionRepositoryChannel").start(); } @Override @@ -49,7 +49,7 @@ public class MemoryTransactionRepositoryChannel extends AbstractTransactionRepos } } - class GloablTransactionConsumer implements Runnable { + class GlobalTransactionConsumer implements Runnable { @Override public void run() { diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java index b802cdf..3a1a430 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java @@ -91,16 +91,16 @@ public class ElasticsearchTransactionRepository
[servicecomb-pack] 25/38: SCB-1369 Default non-persistent transaction data
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 15956e176b29f08b86274fe053757adbbe41fc25 Author: Lei Zhang AuthorDate: Fri Jul 26 15:02:09 2019 +0800 SCB-1369 Default non-persistent transaction data --- .../org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java index 3378260..b9a144e 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java @@ -69,7 +69,7 @@ import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; @ConditionalOnProperty(value = {"alpha.feature.akka.enabled"}) public class FsmAutoConfiguration { - @Value("${alpha.feature.akka.elasticsearch.memory.size:-1}") + @Value("${alpha.feature.akka.channel.memory.size:-1}") int memoryEventChannelMemorySize; @Value("${alpha.feature.akka.transaction.repository.elasticsearch.batchSize:100}")
[servicecomb-pack] 30/38: SCB-1369 Update document
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 6b18f4e7ea67223d597a0c5f11ffb6ae0ebe9173 Author: Lei Zhang AuthorDate: Fri Aug 2 15:28:58 2019 +0800 SCB-1369 Update document --- .../{how_to_use_fsm_zh.md => how_to_use_fsm.md}| 302 + docs/fsm/how_to_use_fsm_zh.md | 177 2 files changed, 312 insertions(+), 167 deletions(-) diff --git a/docs/fsm/how_to_use_fsm_zh.md b/docs/fsm/how_to_use_fsm.md similarity index 51% copy from docs/fsm/how_to_use_fsm_zh.md copy to docs/fsm/how_to_use_fsm.md index c458f74..7a5fd5b 100644 --- a/docs/fsm/how_to_use_fsm_zh.md +++ b/docs/fsm/how_to_use_fsm.md @@ -1,9 +1,17 @@ -# 使用 Alpha 状态机模式 +# Alpha With State Machine -## 快速开始 +## Quick Start -* 启动 Alpha - 使用 `alpha.feature.akka.enabled=true` 开启状态机模式 +The state machine mode save completed transaction data to elasticsearch + +* run elasticsearch with docker + + ```bash + docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.6.2 + ``` + +* run Alpha + use `alpha.feature.akka.enabled=true` enabled state machine mode support ```bash java -jar alpha-server-${version}-exec.jar \ @@ -11,43 +19,34 @@ --spring.datasource.username=saga-user \ --spring.datasource.password=saga-password \ --spring.profiles.active=prd \ ---alpha.feature.akka.enabled=true +--alpha.feature.akka.enabled=true \ +--alpha.feature.akka.transaction.repository.type=elasticsearch \ +--spring.data.elasticsearch.cluster-name=docker-cluster \ +--spring.data.elasticsearch.cluster-nodes=localhost:9300 ``` -* Omega 侧配置 + **NOTE:** `spring.data.elasticsearch.cluster-name` is elasticsearch cluster name, default is `docker-cluster` when run elasticsearch with docker, you can query cluster name by `curl http://localhost:9200/` + +* Omega - 使用 `alpha.feature.akka.enabled=true` 开启状态机模式 + use `alpha.feature.akka.enabled=true` enabled state machine mode support ```base alpha.feature.akka.enabled=true ``` -**注意:**状态机模式默认没有存储执行完毕的事务数据,如果想存储执行后的事务数据请参考 "使用 Elasticsearch 存储终止的全局事务数据章节" - -## Alpha 事件通道类型 - -Alpha 收到 Omeag 发送的事件后放入事件通道等待Akka处理,默认使用内存通道,内存通道不建议在生产环境使用,因为如果Alpha进程宕机,通道内的事件将丢失。生产环境建议使用 activemq, kafka -, redis 等通道类型,可以使用参数 `alpha.feature.akka.channel.type` 配置通道类型。 - -| 参数名 | 默认值 | 说明 | -| -- | -- | --- | -| alpha.feature.akka.channel.type| memory | 可选类型有 activemq, kafka, redis | -| alpha.feature.akka.channel.memory.size | -1 | momory类型时内存队列大小,-1表示Integer.MAX | - -**注意:** activemq, kafka, redis 还未实现 0_0 - ## Alpha APIs - 性能度量 + Metrics -Alpha 提供一个性能度量查询API,使用这个查询接口可以返回当前事务各个环节性能指标,你可以使用基准测试工具 `AlphaBenchmark` 模拟发送数据后查看性能指标。 +You can query Alpha metrics by RESTful API, Use the `AlphaBenchmark` to simulate sending data and quickly experience this feature. -使用以下命令模拟 10 并发,发送 1000 个全局事务 +For exapmle; 10 concurrencies and send 1000 global transactions ```bash java -jar alpha-benchmark-0.5.0-SNAPSHOT-exec.jar --alpha.cluster.address=0.0.0.0:8080 --w=0 --n=1000 --c=10 ``` -查询性能指标 +Query metrics ```bash curl http://localhost:8090/alpha/api/v1/metrics @@ -77,34 +76,30 @@ curl http://localhost:8090/alpha/api/v1/metrics } ``` -例如以上指标中显示 `sagaAvgTime: 9` 表示每个全局事务在Akka的处理耗时9毫秒,`repositoryAvgTime: 0.88` 表示每个全局事务入库耗时0.88毫秒 - -指标说明 - -* eventReceived: Alpha 收到的 gRPC 事件数量 -* eventAccepted: Alpha 处理的 gRPC 事件数量(事件放入事件通道) -* eventRejected: Alpha 拒绝的 gRPC 事件数量 -* eventAvgTime: Alpha 平均耗时(毫秒) -* actorReceived: Akka 收到的事件数量 -* actorAccepted: Akka 处理的事件数量 -* actorRejected: Akka 拒绝的事件数量 -* actorAvgTime: Akka 平均耗时(毫秒) -* sagaBeginCounter: 开始的 Saga 全局事务数量 -* sagaEndCounter: 结束的 Saga 全局事务数量 -* sagaAvgTime: 平均耗时(毫秒) -* committed: COMMITTED状态的 Saga 全局事务数量 -* compensated: COMPENSATED状态的 Saga 全局事务数量 -* suspended: SUSPENDED状态的 Saga 的全局事务数量 -* repositoryReceived: 存储模块收到的全局事务数量 -* repositoryAccepted: 存储模块处理的全局事务数量 -* repositoryRejected: 存储模块拒绝的全局事务数量 -* repositoryAvgTime: 平均耗时(毫秒) - - 事务数据查询 - -> 需要启动 Elasticsearch 存储事务 - -* 查询事务列表 +description + +* eventReceived: number of gRPC events received +* eventAccepted: number of gRPC events accepted(events into the channel) +* eventRejected: number of gRPC events rejected +* eventAvgTime: average elapsed time on events (milliseconds) +* actorReceived: number of events received by actor +* actorAccepted: number of events accepted by actor +* actorRejected: number of events rejected by actor +* actorAvgTime: average elapsed time on actor (milliseconds) +* sagaBeginCounter: saga global transaction start counter +* sagaEndCounter: saga global transaction end counter +* sagaAvgTime: average elapsed time
[servicecomb-pack] 32/38: SCB-1369 Fixed typo
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 4207b6572bdcff17da09020b62f259c48fd52756 Author: Lei Zhang AuthorDate: Sat Aug 3 00:10:03 2019 +0800 SCB-1369 Fixed typo --- .../fsm/repository/NoneTransactionRepository.java | 4 ++-- .../alpha/fsm/repository/TransactionRepository.java| 4 ++-- .../ElasticsearchTransactionRepository.java| 6 +++--- ...Transactions.java => PagingGlobalTransactions.java} | 18 +- .../pack/alpha/server/api/APIControllerV1.java | 8 .../pack/alpha/server/api/APIControllerV1Tests.java| 4 ++-- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java index e40629f..f18f8ed 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java @@ -19,7 +19,7 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import java.lang.invoke.MethodHandles; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; -import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGlobalTransactions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +38,7 @@ public class NoneTransactionRepository implements TransactionRepository { } @Override - public PagingGloablTransactions getGloablTransactions(int page, int size) throws Exception { + public PagingGlobalTransactions getGloablTransactions(int page, int size) throws Exception { throw new UnsupportedOperationException("NoneTransactionRepository Unsupported!"); } } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java index 7e81fc7..8079462 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/TransactionRepository.java @@ -18,7 +18,7 @@ package org.apache.servicecomb.pack.alpha.fsm.repository; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; -import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGlobalTransactions; public interface TransactionRepository { @@ -27,6 +27,6 @@ public interface TransactionRepository { GlobalTransaction getGloablTransactionByGlobalTxId(String globalTxId) throws Exception; - PagingGloablTransactions getGloablTransactions(int page, int size) + PagingGlobalTransactions getGloablTransactions(int page, int size) throws Exception; } diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java index 23e27da..b802cdf 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java @@ -27,7 +27,7 @@ import java.util.List; import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository; import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; -import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGloablTransactions; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGlobalTransactions; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; @@ -100,7 +100,7 @@ public class ElasticsearchTransactionRepository implements TransactionRepository } @Override - public PagingGloablTransactions getGloablTransactions(int page, int size) { + public PagingGlobalTransactions getGloablTransactions(int page, int size) { long start = System.currentTimeMillis(); List globalTransactions = new ArrayList(); SearchQuery searchQuery = new NativeSearchQueryBuilder() @@ -129,7 +129,7 @@
[servicecomb-pack] 19/38: SCB-1369 Modify the test case to get transaction data
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit a5156f66c7390613d8f825629b044171a2088d06 Author: Lei Zhang AuthorDate: Fri Jul 26 19:10:39 2019 +0800 SCB-1369 Modify the test case to get transaction data --- .../alpha/server/fsm/AlphaIntegrationFsmTest.java | 64 +++--- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java index 257ca08..378f375 100644 --- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java +++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java @@ -86,7 +86,6 @@ public class AlphaIntegrationFsmTest { @BeforeClass public static void beforeClass() { omegaEventSender.configClient(NettyChannelBuilder.forAddress("0.0.0.0", port).usePlaintext().build()); -//SagaDataExtension.autoCleanSagaDataMap=false; } @AfterClass @@ -102,6 +101,7 @@ public class AlphaIntegrationFsmTest { @After public void after() { + SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).cleanLastSagaData(); omegaEventSender.onDisconnected(); } @@ -116,10 +116,10 @@ public class AlphaIntegrationFsmTest { omegaEventSender.getBlockingStub().onTxEvent(event); }); await().atMost(2, SECONDS).until(() -> { - SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); + SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); return sagaData !=null && sagaData.isTerminated() && sagaData.getLastState()==SagaActorState.COMMITTED; }); -SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); +SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); assertEquals(sagaData.getTxEntityMap().size(),3); assertNotNull(sagaData.getBeginTime()); assertNotNull(sagaData.getEndTime()); @@ -138,10 +138,10 @@ public class AlphaIntegrationFsmTest { omegaEventSender.getBlockingStub().onTxEvent(event); }); await().atMost(2, SECONDS).until(() -> { - SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); + SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); return sagaData !=null && sagaData.isTerminated() && sagaData.getLastState()==SagaActorState.COMPENSATED; }); -SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); +SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); assertEquals(sagaData.getLastState(),SagaActorState.COMPENSATED); assertEquals(sagaData.getTxEntityMap().size(),1); assertNotNull(sagaData.getBeginTime()); @@ -160,10 +160,10 @@ public class AlphaIntegrationFsmTest { omegaEventSender.getBlockingStub().onTxEvent(event); }); await().atMost(2, SECONDS).until(() -> { - SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); + SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); return sagaData !=null && sagaData.isTerminated() && sagaData.getLastState()==SagaActorState.COMPENSATED; }); -SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); +SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); assertEquals(sagaData.getLastState(),SagaActorState.COMPENSATED); assertEquals(sagaData.getTxEntityMap().size(),2); assertNotNull(sagaData.getBeginTime()); @@ -184,10 +184,10 @@ public class AlphaIntegrationFsmTest { omegaEventSender.getBlockingStub().onTxEvent(event); }); await().atMost(2, SECONDS).until(() -> { - SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); + SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); return sagaData !=null && sagaData.isTerminated() && sagaData.getLastState()==SagaActorState.COMPENSATED; }); -SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getSagaData(globalTxId); +SagaData sagaData = SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(system).getLastSagaDate(); assertEquals(sagaData.getLastState(),SagaActorState.COMPENSATED);
[servicecomb-pack] 14/38: SCB-1369 Define Paging Query Object for APIs
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit c4cbc2484190782254a9700ab90c4a252c86f33a Author: Lei Zhang AuthorDate: Fri Jul 26 18:36:04 2019 +0800 SCB-1369 Define Paging Query Object for APIs --- .../repository/model/PagingGloablTransactions.java | 83 ++ 1 file changed, 83 insertions(+) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java new file mode 100644 index 000..a477019 --- /dev/null +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/model/PagingGloablTransactions.java @@ -0,0 +1,83 @@ +package org.apache.servicecomb.pack.alpha.fsm.repository.model; + +import java.util.List; + +public class PagingGloablTransactions { + private long total; + private int page; + private int size; + private long elapsed; + + public long getTotal() { +return total; + } + + public int getPage() { +return page; + } + + public int getSize() { +return size; + } + + public long getElapsed() { +return elapsed; + } + + public List getGloablTransactions() { +return gloablTransactions; + } + + private List gloablTransactions; + + public static Builder builder() { +return new Builder(); + } + + public static final class Builder { + +private long total; +private int page; +private int size; +private long elapsed; +private List gloablTransactions; + +private Builder() { +} + +public Builder total(long total) { + this.total = total; + return this; +} + +public Builder page(int page) { + this.page = page; + return this; +} + +public Builder size(int size) { + this.size = size; + return this; +} + +public Builder elapsed(long elapsed) { + this.elapsed = elapsed; + return this; +} + +public Builder gloablTransactions(List gloablTransactions) { + this.gloablTransactions = gloablTransactions; + return this; +} + +public PagingGloablTransactions build() { + PagingGloablTransactions pagingGloablTransactions = new PagingGloablTransactions(); + pagingGloablTransactions.total = this.total; + pagingGloablTransactions.gloablTransactions = this.gloablTransactions; + pagingGloablTransactions.page = this.page; + pagingGloablTransactions.size = this.size; + pagingGloablTransactions.elapsed = this.elapsed; + return pagingGloablTransactions; +} + } +}
[servicecomb-pack] 12/38: SCB-1369 Modify counter error
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 640c20a73ba21ab0c9d638d7efaebbc5843f8013 Author: Lei Zhang AuthorDate: Fri Jul 26 15:04:36 2019 +0800 SCB-1369 Modify counter error --- .../java/org/apache/servicecomb/pack/alpha/fsm/metrics/MetricsBean.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/metrics/MetricsBean.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/metrics/MetricsBean.java index 55e8af2..5f68ce4 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/metrics/MetricsBean.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/metrics/MetricsBean.java @@ -120,7 +120,7 @@ public class MetricsBean { } public void doRepositoryAccepted(int size) { -repositoryAccepted.addAndGet(size); +repositoryAccepted.getAndAdd(size); } public void doRepositoryRejected() {
[servicecomb-pack] 24/38: SCB-1369 Delete unused method & class
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit c79846efbfecf2ff1c61925fa1b93b62d62d57c9 Author: Lei Zhang AuthorDate: Fri Jul 26 14:51:05 2019 +0800 SCB-1369 Delete unused method & class --- alpha/alpha-server/src/main/resources/application.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/alpha/alpha-server/src/main/resources/application.yaml b/alpha/alpha-server/src/main/resources/application.yaml index ba00719..ed2c41e 100644 --- a/alpha/alpha-server/src/main/resources/application.yaml +++ b/alpha/alpha-server/src/main/resources/application.yaml @@ -68,6 +68,7 @@ management: elasticsearch: enabled: false +--- spring: profiles: ssl alpha:
[servicecomb-pack] 02/38: SCB-1369 Resolve conflicts with Netty when initializing the number of client processors
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit a70fded17bfc7f463481caab0b9e909c955f8a0f Author: Lei Zhang AuthorDate: Thu Jul 18 14:33:54 2019 +0800 SCB-1369 Resolve conflicts with Netty when initializing the number of client processors --- .../main/java/org/apache/servicecomb/pack/alpha/server/AlphaConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/AlphaConfig.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/AlphaConfig.java index d2e94b1..8e2a8ce 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/AlphaConfig.java +++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/AlphaConfig.java @@ -186,6 +186,8 @@ public class AlphaConfig { @PostConstruct void init() { +//https://github.com/elastic/elasticsearch/issues/25741 +System.setProperty("es.set.netty.runtime.available.processors", "false"); new PendingTaskRunner(pendingCompensations, delay).run(); }
[servicecomb-pack] 07/38: SCB-1369 Merge cucumber feature & Redefine the byteman port number for booking, car, hotel
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit b8c1f65328092b90f05d3455f85334e58de6e5f5 Author: Lei Zhang AuthorDate: Fri Jul 26 14:46:47 2019 +0800 SCB-1369 Merge cucumber feature & Redefine the byteman port number for booking, car, hotel --- .../acceptance-pack-akka-spring-demo/pom.xml | 27 ++ 1 file changed, 27 insertions(+) diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml b/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml index 0e35229..9190412 100644 --- a/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml +++ b/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml @@ -118,6 +118,29 @@ + elasticsearch:6.6.2 + elasticsearch + + + single-node + + + started + + + 9200 + 9300 + + + 6 + + + elasticsearch.rest.port:9200 + elasticsearch.port:9300 + + + + alpha-server:${project.version} alpha @@ -126,9 +149,13 @@ -Dspring.profiles.active=prd,test true + elasticsearch + docker-cluster + elasticsearch.servicecomb.io:9300 postgres:postgresql.servicecomb.io + elasticsearch:elasticsearch.servicecomb.io Started [a-zA-Z]+ in [0-9.]+ seconds
[servicecomb-pack] 04/38: SCB-1369 Rename Benchmark.md to benchmark_zh.md
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit a9cb93b9e6961b845e6f1c57153098a6f2f869be Author: Lei Zhang AuthorDate: Thu Jul 25 00:44:00 2019 +0800 SCB-1369 Rename Benchmark.md to benchmark_zh.md --- docs/fsm/{Benchmark.md => benchmark_zh.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/fsm/Benchmark.md b/docs/fsm/benchmark_zh.md similarity index 100% rename from docs/fsm/Benchmark.md rename to docs/fsm/benchmark_zh.md
[servicecomb-pack] 09/38: SCB-1369 Modified to finally call the stopSagaData method
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 06aa10330ad22a4e5ae61923da988abcc69c3c6c Author: Lei Zhang AuthorDate: Fri Jul 26 14:56:27 2019 +0800 SCB-1369 Modified to finally call the stopSagaData method --- .../java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java index b998dcf..2675de3 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java @@ -358,14 +358,14 @@ public class SagaActor extends if (LOG.isDebugEnabled()) { LOG.debug("stop {} {}", data.getGlobalTxId(), state); } - data.setTerminated(true); + sagaEndTime = System.currentTimeMillis(); + SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(context().system()).doSagaEndCounter(); + SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(context().system()).doSagaAvgTime(sagaEndTime - sagaBeginTime); data.setLastState(state); data.setEndTime(new Date()); + data.setTerminated(true); SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(getContext().getSystem()) .stopSagaData(data.getGlobalTxId(), data); - sagaEndTime = System.currentTimeMillis(); - SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(context().system()).doSagaEndCounter(); - SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER.get(context().system()).doSagaAvgTime(sagaEndTime - sagaBeginTime); } ) );
[servicecomb-pack] 11/38: SCB-1369 Default non-persistent transaction data
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit f3c76ddbdc6c12acbb09a39e6a2b833f1902f0db Author: Lei Zhang AuthorDate: Fri Jul 26 15:02:09 2019 +0800 SCB-1369 Default non-persistent transaction data --- .../pack/alpha/fsm/FsmAutoConfiguration.java | 35 +++--- .../fsm/repository/NoneTransactionRepository.java | 33 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java index 28e517b..b9a144e 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java @@ -24,17 +24,14 @@ import akka.actor.ActorSystem; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import java.util.Map; -<<< HEAD - -import org.apache.servicecomb.pack.alpha.core.NodeStatus; -=== import javax.annotation.PostConstruct; ->>> SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped +import org.apache.servicecomb.pack.alpha.core.NodeStatus; import org.apache.servicecomb.pack.alpha.fsm.channel.ActiveMQActorEventChannel; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.MessagePublisher; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.RedisMessagePublisher; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.RedisMessageSubscriber; import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; +import org.apache.servicecomb.pack.alpha.fsm.repository.NoneTransactionRepository; import org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch.ElasticsearchTransactionRepository; import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository; import org.apache.servicecomb.pack.alpha.fsm.repository.channel.MemoryTransactionRepositoryChannel; @@ -46,7 +43,6 @@ import org.apache.servicecomb.pack.alpha.fsm.channel.MemoryActorEventChannel; import org.apache.servicecomb.pack.alpha.fsm.channel.RedisActorEventChannel; import org.apache.servicecomb.pack.alpha.fsm.sink.SagaActorEventSender; import org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.AkkaConfigPropertyAdapter; -import org.apache.servicecomb.pack.alpha.fsm.spring.integration.eventbus.EventSubscribeBeanPostProcessor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -58,7 +54,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.ConfigurableEnvironment; -<<< HEAD import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; @@ -68,15 +63,13 @@ import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; import org.springframework.data.redis.serializer.GenericToStringSerializer; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; -=== import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; ->>> SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped @Configuration @ConditionalOnProperty(value = {"alpha.feature.akka.enabled"}) public class FsmAutoConfiguration { - @Value("${alpha.feature.akka.elasticsearch.memory.size:-1}") + @Value("${alpha.feature.akka.channel.memory.size:-1}") int memoryEventChannelMemorySize; @Value("${alpha.feature.akka.transaction.repository.elasticsearch.batchSize:100}") @@ -114,11 +107,6 @@ public class FsmAutoConfiguration { } @Bean - public EventSubscribeBeanPostProcessor eventSubscribeBeanPostProcessor() { -return new EventSubscribeBeanPostProcessor(); - } - - @Bean public MetricsService metricsService() { return new MetricsService(); } @@ -130,7 +118,6 @@ public class FsmAutoConfiguration { @Bean @ConditionalOnMissingBean(ActorEventChannel.class) - @ConditionalOnProperty(value = "alpha.feature.akka.channel.type", havingValue = "memory", matchIfMissing = true) public ActorEventChannel memoryEventChannel(ActorEventSink actorEventSink, MetricsService metricsService) { return new MemoryActorEventChannel(actorEventSink, memoryEventChannelMemorySize, @@ -153,7 +140,6 @@ public class FsmAutoConfiguration { @Bean @ConditionalOnProperty(value = "alpha.feature.akka.channel.type", havingValue = "redis")
[servicecomb-pack] 10/38: SCB-1369 Use synchronization methods to avoid conflicts between thread refreshTimer and batch writes
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 690ebe1916fdcfa907866c1b8896ee17d8a52113 Author: Lei Zhang AuthorDate: Fri Jul 26 14:58:30 2019 +0800 SCB-1369 Use synchronization methods to avoid conflicts between thread refreshTimer and batch writes --- .../ElasticsearchTransactionRepository.java | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java index 601249e..b7dc0a1 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java @@ -42,6 +42,7 @@ public class ElasticsearchTransactionRepository implements TransactionRepository private int batchSizeCounter; private int refreshTime; private final List queries = new ArrayList<>(); + private final Boolean lock = true; public ElasticsearchTransactionRepository( ElasticsearchTemplate template, MetricsService metricsService, int batchSize, @@ -50,10 +51,12 @@ public class ElasticsearchTransactionRepository implements TransactionRepository this.metricsService = metricsService; this.batchSize = batchSize; this.refreshTime = refreshTime; - if (this.refreshTime > 0) { new Thread(new RefreshTimer(), "elasticsearch-repository-refresh").start(); } +if(!this.template.indexExists(INDEX_NAME)){ + this.template.createIndex(INDEX_NAME); +} } @Override @@ -63,10 +66,11 @@ public class ElasticsearchTransactionRepository implements TransactionRepository batchSizeCounter++; metricsService.metrics().doRepositoryReceived(); if (batchSize == 0 || batchSizeCounter == batchSize) { - save(begin); - batchSizeCounter = 0; - queries.clear(); - + synchronized (lock){ +save(begin); +batchSizeCounter = 0; +queries.clear(); + } } } @@ -93,8 +97,10 @@ public class ElasticsearchTransactionRepository implements TransactionRepository public void run() { while (true) { try { - if (!queries.isEmpty()) { -save(System.currentTimeMillis()); + synchronized (lock){ +if (!queries.isEmpty()) { + save(System.currentTimeMillis()); +} } } catch (Exception e) { LOG.error(e.getMessage(), e);
[servicecomb-pack] 08/38: SCB-1369 Delete unused method & class
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit b7f4cb0e2c0e5409cd922a45aa0f91e0f4512525 Author: Lei Zhang AuthorDate: Fri Jul 26 14:51:05 2019 +0800 SCB-1369 Delete unused method & class --- .../pack/alpha/core/fsm/PackSagaEvent.java | 150 - .../servicecomb/pack/alpha/fsm/model/SagaData.java | 18 --- .../eventbus/EventSubscribeBeanPostProcessor.java | 62 - .../src/main/resources/application.yaml| 3 +- .../alpha/server/fsm/AlphaIntegrationFsmTest.java | 13 +- 5 files changed, 11 insertions(+), 235 deletions(-) diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/PackSagaEvent.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/PackSagaEvent.java deleted file mode 100644 index 1588c55..000 --- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/PackSagaEvent.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.servicecomb.pack.alpha.core.fsm; - -import java.util.Date; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -@Entity -@Table(name = "PACK_SAGA_EVENT") -public class PackSagaEvent { - @Transient - public static final long MAX_TIMESTAMP = 25340221440L; // -12-31 00:00:00 - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long surrogateId; - - private String serviceName; - private String instanceId; - private Date creationTime; - private String globalTxId; - private String localTxId; - private String parentTxId; - private String type; - private String compensationMethod; - private Date expiryTime; - private String retryMethod; - private int retries; - private byte[] payloads; - - public static Builder builder() { -return new Builder(); - } - - public static final class Builder { - -private String serviceName; -private String instanceId; -private Date creationTime; -private String globalTxId; -private String localTxId; -private String parentTxId; -private String type; -private String compensationMethod; -private Date expiryTime; -private String retryMethod; -private int retries; -private byte[] payloads; - -private Builder() { -} - -public Builder serviceName(String serviceName) { - this.serviceName = serviceName; - return this; -} - -public Builder instanceId(String instanceId) { - this.instanceId = instanceId; - return this; -} - -public Builder creationTime(Date creationTime) { - this.creationTime = creationTime; - return this; -} - -public Builder globalTxId(String globalTxId) { - this.globalTxId = globalTxId; - return this; -} - -public Builder localTxId(String localTxId) { - this.localTxId = localTxId; - return this; -} - -public Builder parentTxId(String parentTxId) { - this.parentTxId = parentTxId; - return this; -} - -public Builder type(String type) { - this.type = type; - return this; -} - -public Builder compensationMethod(String compensationMethod) { - this.compensationMethod = compensationMethod; - return this; -} - -public Builder expiryTime(Date expiryTime) { - this.expiryTime = expiryTime; - return this; -} - -public Builder retryMethod(String retryMethod) { - this.retryMethod = retryMethod; - return this; -} - -public Builder retries(int retries) { - this.retries = retries; - return this; -} - -public Builder payloads(byte[] payloads) { - this.payloads = payloads; - return this; -} - -public PackSagaEvent build() { - PackSagaEvent packSagaEvent = new PackSagaEvent(); - packSagaEvent.instanceId = this.instanceId; - packSagaEvent.serviceName = this.serviceName; -
[servicecomb-pack] branch master updated (b8abd1a -> 958e597)
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git. from b8abd1a SCB-1386 Added some comments on the SagaEnd annotation. new 601f6f4 SCB-1369 Add Elasticsearch Persistence Repository new a70fded SCB-1369 Resolve conflicts with Netty when initializing the number of client processors new 9d5a712 SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped new a9cb93b SCB-1369 Rename Benchmark.md to benchmark_zh.md new 5e997a4 SCB-1369 Add how_to_use_fsm_zh.md new 19d7bb5 SCB-1369 Merge cucumber feature new b8c1f65 SCB-1369 Merge cucumber feature & Redefine the byteman port number for booking, car, hotel new b7f4cb0 SCB-1369 Delete unused method & class new 06aa103 SCB-1369 Modified to finally call the stopSagaData method new 690ebe1 SCB-1369 Use synchronization methods to avoid conflicts between thread refreshTimer and batch writes new f3c76dd SCB-1369 Default non-persistent transaction data new 640c20a SCB-1369 Modify counter error new 4e6b3ab SCB-1369 Define Elasticsearch Document Object for Query new c4cbc24 SCB-1369 Define Paging Query Object for APIs new 3ca8812 SCB-1369 Attribute events type changed to Map for deserialize the JSON new a888641 SCB-1369 Add paging query event list method and single event query method for APIs new b54421e SCB-1369 Clean up memory data after persisting data to ES new 4d2d9e0 SCB-1369 Event object built-in toMap method new a5156f6 SCB-1369 Modify the test case to get transaction data new 37b44cd SCB-1369 Change @Autowired TransactionRepository required is false for Unit Tests new 7b7e1d3 SCB-1369 rebase new e7a43a4 SCB-1369 Test APIs adds prefix /test new 1fe0bd2 SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped new c79846e SCB-1369 Delete unused method & class new 15956e1 SCB-1369 Default non-persistent transaction data new 3980564 SCB-1369 Fixed typo Global new ceec64b SCB-1369 Fixed conflict new 8a55243 SCB-1369 Fixed typo new c19ef0c SCB-1369 Add license header new 6b18f4e SCB-1369 Update document new b78efa7 SCB-1369 Add unit test cases for APIControllerV1 new 4207b65 SCB-1369 Fixed typo new c9651fc SCB-1369 Modify APIs to return JSON date format to long new 166e696 SCB-1369 Fixed typo new 131eb83 SCB-1369 Fixed transaction typo new 4130d60 SCB-1369 Fixed global typo new 5ab27e8 SCB-1369 Add License header new 958e597 SCB-1369 Modify warning message The 38 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../acceptance-pack-akka-spring-demo/pom.xml | 27 ++ .../org/apache/servicecomb/pack/PackStepdefs.java | 6 +- .../alpha_records_transaction_events.feature | 169 +++ ...ion_after_post_car_compensated_scenario.feature | 42 -- ...n_after_post_hotel_compensated_scenario.feature | 46 -- ...pack_booking_timeout_suspended_scenario.feature | 44 -- .../pack_car_fail_compensated_scenario.feature | 37 -- .../pack_hotel_fail_compensated_scenario.feature | 41 -- .../test/resources/pack_success_scenario.feature | 41 -- .../pack/alpha/core/fsm/PackSagaEvent.java | 150 --- alpha/alpha-fsm/pom.xml| 12 + .../pack/alpha/fsm/FsmAutoConfiguration.java | 84 +++- .../servicecomb/pack/alpha/fsm/SagaActor.java | 10 +- .../pack/alpha/fsm}/TransactionType.java | 4 +- .../pack/alpha/fsm/event/base/BaseEvent.java | 12 +- .../pack/alpha/fsm/metrics/MetricsBean.java| 46 ++ .../servicecomb/pack/alpha/fsm/model/SagaData.java | 18 - .../servicecomb/pack/alpha/fsm/model/TxEntity.java | 17 +- .../AbstractTransactionRepositoryChannel.java} | 30 +- .../fsm/repository/NoneTransactionRepository.java | 29 +- .../fsm/repository/TransactionRepository.java} | 17 +- .../TransactionRepositoryChannel.java} | 8 +- .../MemoryTransactionRepositoryChannel.java} | 34 +- .../ElasticsearchTransactionRepository.java| 204 + .../elasticsearch/GlobalTransactionDocument.java | 12 +- .../fsm/repository/model/GlobalTransaction.java| 181 .../repository/model/PagingGlobalTransactions.java | 100 + .../fsm/repository/model/SagaSubTransaction.java | 109 + .../spring/integration/akka/SagaDataExtension.java | 106 ++--- .../eventbus/EventSubscribeBeanPostProcessor.java | 62 --- .../servicecomb/pack/alpha/fsm/SagaActorTest.java | 55 ++- .../pack/alpha/fsm/SagaIntegrationTest.java| 73 +--
[servicecomb-pack] 18/38: SCB-1369 Event object built-in toMap method
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 4d2d9e083c09bd51ad27d91e369db9df05a42924 Author: Lei Zhang AuthorDate: Fri Jul 26 19:08:46 2019 +0800 SCB-1369 Event object built-in toMap method --- .../apache/servicecomb/pack/alpha/fsm/event/base/BaseEvent.java | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/event/base/BaseEvent.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/event/base/BaseEvent.java index ef27594..99c5e17 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/event/base/BaseEvent.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/event/base/BaseEvent.java @@ -17,11 +17,13 @@ package org.apache.servicecomb.pack.alpha.fsm.event.base; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.Serializable; import java.util.Date; +import java.util.Map; public abstract class BaseEvent implements Serializable { - + private final ObjectMapper mapper = new ObjectMapper(); private String serviceName; private String instanceId; private String globalTxId; @@ -96,4 +98,8 @@ public abstract class BaseEvent implements Serializable { ", createTime=" + createTime + '}'; } + + public Map toMap() throws Exception { +return mapper.readValue(mapper.writeValueAsString(this), Map.class); + } }
[servicecomb-pack] 05/38: SCB-1369 Add how_to_use_fsm_zh.md
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 5e997a40136462e81b651b7a0ea3a1ebf3443d4c Author: Lei Zhang AuthorDate: Thu Jul 25 00:44:43 2019 +0800 SCB-1369 Add how_to_use_fsm_zh.md --- docs/fsm/how_to_use_fsm_zh.md | 339 ++ 1 file changed, 339 insertions(+) diff --git a/docs/fsm/how_to_use_fsm_zh.md b/docs/fsm/how_to_use_fsm_zh.md new file mode 100644 index 000..6c7909e --- /dev/null +++ b/docs/fsm/how_to_use_fsm_zh.md @@ -0,0 +1,339 @@ +# 使用 Alpha 状态机模式 + +## 快速开始 + +使用 `alpha.feature.akka.enabled=true` 开启状态机模式 + +```bash +java -jar alpha-server-${version}-exec.jar \ + --spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false + --spring.datasource.username=saga-user + --spring.datasource.password=saga-password + --spring.profiles.active=prd + --alpha.feature.akka.enabled=true +``` + +**注意:**状态机模式默认没有存储执行完毕的事务数据,如果想存储执行后的事务数据请看使用 Elasticsearch 存储终止的全局事务数据章节 + +## Alpha 事件通道类型 + +Alpha 收到 Omeag 发送的事件后放入事件通道等待Akka处理,默认使用内存通道,内存通道不建议在生产环境使用,因为如果Alpha进程宕机,通道内的事件将丢失。生产环境建议使用 activemq, kafka +, redis 等通道类型,可以使用参数 `alpha.feature.akka.channel.type` 配置通道类型。 + +| 参数名 | 默认值 | 说明 | +| -- | -- | --- | +| alpha.feature.akka.channel.type| memory | 可选类型有 activemq, kafka, redis | +| alpha.feature.akka.channel.memory.size | -1 | momory类型时内存队列大小,-1表示Integer.MAX | + +**注意:** activemq, kafka, redis 还未实现 0_0 + +## 性能度量 + +Alpha 提供一个性能度量查询API,使用这个查询接口可以返回当前事务各个环节性能指标,你可以使用基准测试工具 `AlphaBenchmark` 模拟发送数据后查看性能指标。 + +使用以下命令模拟 10 并发,发送 1000 个全局事务 + +```bash +java -jar alpha-benchmark-0.5.0-SNAPSHOT-exec.jar --alpha.cluster.address=0.0.0.0:8080 --w=0 --n=1000 --c=10 +``` + +查询性能指标 + +```bash +curl http://localhost:8090/alpha/api/v1/metrics + +{ + nodeType: "MASTER", + metrics: { +eventReceived: 8000, +eventAccepted: 8000, +eventRejected: 0, +eventAvgTime: 0, +actorReceived: 8000, +actorAccepted: 8000, +actorRejected: 0, +actorAvgTime: 0, +sagaBeginCounter: 1000, +sagaEndCounter: 1000, +sagaAvgTime: 9, +committed: 1000, +compensated: 0, +suspended: 0, +repositoryReceived: 1000, +repositoryAccepted: 1000, +repositoryRejected: 0, +repositoryAvgTime: 0.88 + } +} +``` + +例如以上指标中显示 `sagaAvgTime: 9` 表示每个全局事务在Akka的处理耗时9毫秒,`repositoryAvgTime: 0.88` 表示每个全局事务入库耗时0.88毫秒 + +指标说明 + +* eventReceived: Alpha 收到的 gRPC 事件数量 +* eventAccepted: Alpha 处理的 gRPC 事件数量(事件放入事件通道) +* eventRejected: Alpha 拒绝的 gRPC 事件数量 +* eventAvgTime: Alpha 平均耗时(毫秒) +* actorReceived: Akka 收到的事件数量 +* actorAccepted: Akka 处理的事件数量 +* actorRejected: Akka 拒绝的事件数量 +* actorAvgTime: Akka 平均耗时(毫秒) +* sagaBeginCounter: 开始的 Saga 全局事务数量 +* sagaEndCounter: 结束的 Saga 全局事务数量 +* sagaAvgTime: 平均耗时(毫秒) +* committed: COMMITTED状态的 Saga 全局事务数量 +* compensated: COMPENSATED状态的 Saga 全局事务数量 +* suspended: SUSPENDED状态的 Saga 的全局事务数量 +* repositoryReceived: 存储模块收到的全局事务数量 +* repositoryAccepted: 存储模块处理的全局事务数量 +* repositoryRejected: 存储模块拒绝的全局事务数量 +* repositoryAvgTime: 平均耗时(毫秒) + +## 使用 Elasticsearch 存储终止的全局事务数据 + +> 只有终止的全局事务才会存储到 Elasticsearch 中,终止的全局事务包含正常终止或者挂起终止两种情况,执行中的全局事务需要通过调用 Alpha RESTfulAPI 进行查询 + +使用 docker 启动一个 Elasticsearch 服务,如果你已经有 Elasticsearch 服务请忽略这个步骤 + +```bash +docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.6.2 +``` + +启动 Alpha 的时候配置 Elasticsearch 参数 + +```bash +java -jar alpha-server-${version}-exec.jar \ + --spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false + --spring.datasource.username=saga-user + --spring.datasource.password=saga-password + --spring.profiles.active=prd + --alpha.feature.akka.enabled=true + --alpha.feature.akka.transaction.repository.type=elasticsearch + --spring.data.elasticsearch.cluster-name=docker-cluster + --spring.data.elasticsearch.cluster-nodes=localhost:9300 + --spring.elasticsearch.rest.uris=http://localhost:9200 +``` +| 参数名 | 默认值 | 说明 | +| | -- | | +| alpha.feature.akka.transaction.repository.type || 持久化类型,目前可选值 elasticsearch,如果不设置则不存储 | +| alpha.feature.akka.transaction.repository.elasticsearch.memory.size | -1 | 持久化数据队列,默认 Integer.MAX. Actor会将终止的事务数据放入此队列,并等待存入elasticsearch | +| alpha.feature.akka.transaction.repository.elasticsearch.batchSize | 100| elasticsearch 批量入库数量 | +| alpha.feature.akka.transaction.repository.elasticsearch.refreshTime | 5000 | elasticsearch 定时同步到ES时间
[servicecomb-pack] 01/38: SCB-1369 Add Elasticsearch Persistence Repository
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 601f6f4f9dba12e480324162085b007eb1622dea Author: Lei Zhang AuthorDate: Thu Jul 18 14:25:10 2019 +0800 SCB-1369 Add Elasticsearch Persistence Repository --- alpha/alpha-fsm/pom.xml| 12 ++ .../pack/alpha/fsm/TransactionType.java| 22 +++ .../AbstractTransactionRepositoryChannel.java | 41 + .../fsm/repository/TransactionRepository.java | 25 +++ .../repository/TransactionRepositoryChannel.java | 24 +++ .../MemoryTransactionRepositoryChannel.java| 71 + .../ElasticsearchTransactionRepository.java| 111 + .../fsm/repository/model/GloablTransaction.java| 171 + .../fsm/repository/model/SagaSubTransaction.java | 106 + .../ElasticsearchTransactionRepositoryTest.java| 139 + 10 files changed, 722 insertions(+) diff --git a/alpha/alpha-fsm/pom.xml b/alpha/alpha-fsm/pom.xml index 9f33266..4102be6 100644 --- a/alpha/alpha-fsm/pom.xml +++ b/alpha/alpha-fsm/pom.xml @@ -58,6 +58,7 @@ spring-boot-autoconfigure + org.apache.servicecomb.pack pack-common @@ -66,6 +67,11 @@ org.apache.servicecomb.pack alpha-core + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + com.google.guava guava @@ -73,6 +79,12 @@ org.springframework.boot spring-boot-starter-log4j2 + + + log4j-slf4j-impl + org.apache.logging.log4j + + javax.persistence diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/TransactionType.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/TransactionType.java new file mode 100644 index 000..7184783 --- /dev/null +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/TransactionType.java @@ -0,0 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.pack.alpha.fsm; + +public enum TransactionType { + SAGA +} diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java new file mode 100644 index 000..92ed257 --- /dev/null +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/AbstractTransactionRepositoryChannel.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.pack.alpha.fsm.repository; + +import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; + +public abstract class AbstractTransactionRepositoryChannel implements TransactionRepositoryChannel { + + protected final MetricsService metricsService; + protected final TransactionRepository repository; + + public abstract void sendTo(GloablTransaction transaction); + + public AbstractTransactionRepositoryChannel( + TransactionRepository repository, + MetricsService metricsService) { +this.repository =
[GitHub] [servicecomb-pack] WillemJiang merged pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch
WillemJiang merged pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[servicecomb-pack] 03/38: SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 9d5a712edad07f41d61cf6430222c44d1caa9dfe Author: Lei Zhang AuthorDate: Thu Jul 18 14:36:34 2019 +0800 SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped --- .../pack/alpha/fsm/FsmAutoConfiguration.java | 85 ++ .../servicecomb/pack/alpha/fsm/SagaActor.java | 2 +- .../pack/alpha/fsm/event/base/BaseEvent.java | 4 + .../pack/alpha/fsm/metrics/MetricsBean.java| 46 .../servicecomb/pack/alpha/fsm/model/TxEntity.java | 17 +++-- .../spring/integration/akka/SagaDataExtension.java | 43 --- .../servicecomb/pack/alpha/fsm/SagaActorTest.java | 22 ++ .../pack/alpha/fsm/SagaIntegrationTest.java| 14 +++- .../alpha/server/fsm/AlphaIntegrationFsmTest.java | 14 +++- 9 files changed, 213 insertions(+), 34 deletions(-) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java index 9101686..28e517b 100644 --- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java @@ -24,13 +24,21 @@ import akka.actor.ActorSystem; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import java.util.Map; +<<< HEAD import org.apache.servicecomb.pack.alpha.core.NodeStatus; +=== +import javax.annotation.PostConstruct; +>>> SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped import org.apache.servicecomb.pack.alpha.fsm.channel.ActiveMQActorEventChannel; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.MessagePublisher; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.RedisMessagePublisher; import org.apache.servicecomb.pack.alpha.fsm.channel.redis.RedisMessageSubscriber; import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService; +import org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch.ElasticsearchTransactionRepository; +import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository; +import org.apache.servicecomb.pack.alpha.fsm.repository.channel.MemoryTransactionRepositoryChannel; +import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepositoryChannel; import org.apache.servicecomb.pack.alpha.fsm.sink.ActorEventSink; import org.apache.servicecomb.pack.alpha.fsm.channel.ActorEventChannel; import org.apache.servicecomb.pack.alpha.fsm.channel.KafkaActorEventChannel; @@ -50,6 +58,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.ConfigurableEnvironment; +<<< HEAD import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; @@ -59,64 +68,92 @@ import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; import org.springframework.data.redis.serializer.GenericToStringSerializer; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +=== +import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; +>>> SCB-1369 Save transaction data to Elasticsearch after SagaActor stopped @Configuration @ConditionalOnProperty(value = {"alpha.feature.akka.enabled"}) public class FsmAutoConfiguration { - @Value("${alpha.feature.akka.channel.memory.size:-1}") + @Value("${alpha.feature.akka.elasticsearch.memory.size:-1}") int memoryEventChannelMemorySize; + @Value("${alpha.feature.akka.transaction.repository.elasticsearch.batchSize:100}") + int repositoryElasticsearchBatchSize; + + @Value("${alpha.feature.akka.transaction.repository.elasticsearch.refreshTime:5000}") + int repositoryElasticsearchRefreshTime; + + @Value("${alpha.feature.akka.transaction.repository.elasticsearch.memory.size:-1}") + int memoryTransactionRepositoryChannelSize; + + @PostConstruct + void init() { +System.setProperty("es.set.netty.runtime.available.processors", "false"); + } + @Bean - public ActorSystem actorSystem(ConfigurableApplicationContext applicationContext, ConfigurableEnvironment environment) { -ActorSystem system = ActorSystem.create("alpha-akka", akkaConfiguration(applicationContext,environment)); + public ActorSystem actorSystem(ConfigurableApplicationContext applicationContext, + ConfigurableEnvironment environment, MetricsService metricsService, +
[servicecomb-pack] 13/38: SCB-1369 Define Elasticsearch Document Object for Query
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 4e6b3ab9e8f006f994a8727e0a19039463e6e18e Author: Lei Zhang AuthorDate: Fri Jul 26 18:35:07 2019 +0800 SCB-1369 Define Elasticsearch Document Object for Query --- .../fsm/repository/elasticsearch/GloablTransactionDocument.java | 9 + 1 file changed, 9 insertions(+) diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GloablTransactionDocument.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GloablTransactionDocument.java new file mode 100644 index 000..d37639b --- /dev/null +++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GloablTransactionDocument.java @@ -0,0 +1,9 @@ +package org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch; + +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GloablTransaction; +import org.springframework.data.elasticsearch.annotations.Document; + +@Document(indexName = ElasticsearchTransactionRepository.INDEX_NAME, type = ElasticsearchTransactionRepository.INDEX_TYPE) +public class GloablTransactionDocument extends GloablTransaction { + +}
[servicecomb-pack] 06/38: SCB-1369 Merge cucumber feature
This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git commit 19d7bb5f4874f6f2e9f1c37d48bf466c9e285125 Author: Lei Zhang AuthorDate: Fri Jul 26 14:44:37 2019 +0800 SCB-1369 Merge cucumber feature --- .../alpha_records_transaction_events.feature | 169 + ...ion_after_post_car_compensated_scenario.feature | 42 - ...n_after_post_hotel_compensated_scenario.feature | 46 -- ...pack_booking_timeout_suspended_scenario.feature | 44 -- .../pack_car_fail_compensated_scenario.feature | 37 - .../pack_hotel_fail_compensated_scenario.feature | 41 - .../test/resources/pack_success_scenario.feature | 41 - 7 files changed, 169 insertions(+), 251 deletions(-) diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature new file mode 100644 index 000..52b4d5b --- /dev/null +++ b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature @@ -0,0 +1,169 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +Feature: Alpha records transaction events + + Scenario: 1.Success Scenario +Given Car Service is up and running +And Hotel Service is up and running +And Booking Service is up and running +And Alpha is up and running + +When User Sean requests to book 2 cars and 1 rooms success + +Then Alpha records the following events + | serviceName | type | + | booking | SagaStartedEvent | + | car | TxStartedEvent | + | car | TxEndedEvent | + | hotel | TxStartedEvent | + | hotel | TxEndedEvent | + | booking | SagaEndedEvent | + +And Car Service contains the following booking orders + | id | name | amount | confirmed | cancelled | + | 1 | Sean | 2 | true | false | + +And Hotel Service contains the following booking orders + | id | name | amount | confirmed | cancelled | + | 1 | Sean | 1 | true | false | + + + Scenario: 2.Booking Exception After Car Hotel Secenario +Given Car Service is up and running +And Hotel Service is up and running +And Booking Service is up and running +And Alpha is up and running + +Given Install the byteman script booking_exception_after_post_car.btm to Booking Service + +When User Sean requests to book 1 cars and 1 rooms fail + +Then Alpha records the following events + | serviceName | type | + | booking | SagaStartedEvent | + | car | TxStartedEvent | + | car | TxEndedEvent | + | booking | SagaAbortedEvent | + | car | TxCompensatedEvent | + +Then Car Service contains the following booking orders + | id | name | amount | confirmed | cancelled | + | 1 | Sean | 1 | false | true | + +Then Hotel Service contains the following booking orders + | id | name | amount | confirmed | cancelled | + + Scenario: 2.Booking Exception After Post Hotel Secenario +Given Car Service is up and running +And Hotel Service is up and running +And Booking Service is up and running +And Alpha is up and running + +Given Install the byteman script booking_exception_after_post_hotel.btm to Booking Service + +When User Sean requests to book 1 cars and 1 rooms fail + +Then Alpha records the following events + | serviceName | type | + | booking | SagaStartedEvent | + | car | TxStartedEvent | + | car | TxEndedEvent | + | hotel | TxStartedEvent | + | hotel | TxEndedEvent | + | booking | SagaAbortedEvent | + | hotel | TxCompensatedEvent | + | car | TxCompensatedEvent | + +Then Car Service contains the following booking orders + | id | name | amount | confirmed | cancelled | + | 1 | Sean | 1 | false | true | + +Then Hotel
[GitHub] [servicecomb-toolkit] kakulisen opened a new pull request #12: test
kakulisen opened a new pull request #12: test URL: https://github.com/apache/servicecomb-toolkit/pull/12 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-pack] coveralls edited a comment on issue #525: [SCB-1369] Save the terminated transaction data to elasticsearch
coveralls edited a comment on issue #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525#issuecomment-517897539 [![Coverage Status](https://coveralls.io/builds/24981799/badge)](https://coveralls.io/builds/24981799) Coverage increased (+0.5%) to 82.78% when pulling **cc59fb9f43f0fb2a68b1e397961d758509878da3 on coolbeevip:SCB-1369** into **b8abd1a21aa39ca3c628ae1d7b6078e2d773fff6 on apache:master**. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-pack] coolbeevip commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch
coolbeevip commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525#discussion_r310487992 ## File path: alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java ## @@ -0,0 +1,9 @@ +package org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch; Review comment: Oh, it has been corrected This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-pack] coolbeevip commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch
coolbeevip commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525#discussion_r310488037 ## File path: alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java ## @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.pack.alpha.fsm.repository; + +import java.lang.invoke.MethodHandles; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGlobalTransactions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NoneTransactionRepository implements TransactionRepository { + + private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Override + public void send(GlobalTransaction transaction) { +LOG.warn("Please configure alpha.feature.akka.transaction.repository.type=elasticsearch to use elasticsearch to persist transaction data."); Review comment: Good advice This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-pack] WillemJiang commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch
WillemJiang commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525#discussion_r310471131 ## File path: alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/GlobalTransactionDocument.java ## @@ -0,0 +1,9 @@ +package org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch; Review comment: ASL header. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-pack] WillemJiang commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch
WillemJiang commented on a change in pull request #525: [SCB-1369] Save the terminated transaction data to elasticsearch URL: https://github.com/apache/servicecomb-pack/pull/525#discussion_r310470467 ## File path: alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/NoneTransactionRepository.java ## @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.pack.alpha.fsm.repository; + +import java.lang.invoke.MethodHandles; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.GlobalTransaction; +import org.apache.servicecomb.pack.alpha.fsm.repository.model.PagingGlobalTransactions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NoneTransactionRepository implements TransactionRepository { + + private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Override + public void send(GlobalTransaction transaction) { +LOG.warn("Please configure alpha.feature.akka.transaction.repository.type=elasticsearch to use elasticsearch to persist transaction data."); Review comment: I think we can add a line in the warning message "NoneTransactionRepostory is set." This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [servicecomb-java-chassis] coveralls edited a comment on issue #1281: [SCB-1402] BeanUtils.getImplClassFromBean can not return correctly in…
coveralls edited a comment on issue #1281: [SCB-1402] BeanUtils.getImplClassFromBean can not return correctly in… URL: https://github.com/apache/servicecomb-java-chassis/pull/1281#issuecomment-515904140 [![Coverage Status](https://coveralls.io/builds/24980317/badge)](https://coveralls.io/builds/24980317) Coverage increased (+0.008%) to 85.693% when pulling **cd913ab7a71de58959ccbff6130c367ef2e58238 on AngLi2:rpc** into **e6a4850db7c12db9d2adbe2739923a9641ca3151 on apache:master**. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services