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/incubator-servicecomb-saga.git
commit 268e63b47c3cfd04c07bf4c8a07972089e92d9b1 Author: seanyinx <[email protected]> AuthorDate: Wed Jan 17 17:57:44 2018 +0800 SCB-249 replaced mysql with postgres to comply with APL2 in original saga Signed-off-by: seanyinx <[email protected]> --- README.md | 4 +- alpha/alpha-server/pom.xml | 14 +---- docker-compose.yaml | 21 ++++--- integration-tests/pack-tests/pom.xml | 20 +++---- .../pack/tests/EclipseLinkJpaConfiguration.java | 52 ---------------- .../pack/tests/GreetingApplication.java | 2 + omega/omega-spring-tx/pom.xml | 4 +- .../saga/omega/transaction/spring/User.java | 5 +- .../omega-spring-tx/src/test/resources/schema.sql | 6 ++ pom.xml | 6 ++ .../conditional-transaction-demo-tests/pom.xml | 21 ++++--- .../docker-compose.yaml | 21 ++++--- .../demo-tests/pom.xml | 21 ++++--- .../docker-compose.yaml | 21 ++++--- saga-persistence/pom.xml | 36 +++++++++++ saga-persistence/saga-persistence-jpa/pom.xml | 69 ++++++++++++++++++++++ .../jpa}/EclipseLinkJpaConfiguration.java | 4 +- .../src/main/resources/META-INF/spring.factories | 23 +------- saga-spring/pom.xml | 13 ++-- .../servicecomb/saga/spring/SagaEventEntity.java | 5 +- .../servicecomb/saga/spring/SagaEventRepo.java | 6 +- saga-spring/src/main/resources/application.yaml | 13 +--- saga-spring/src/main/resources/schema-mysql.sql | 9 --- .../src/main/resources/schema-postgresql.sql | 9 +++ saga-spring/src/test/resources/data.sql | 12 ++-- 25 files changed, 222 insertions(+), 195 deletions(-) diff --git a/README.md b/README.md index 1b2c4f3..9a7249f 100755 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ You will need: 1. [Oracle JDK 1.8+][jdk] 2. [Maven 3.x][maven] 3. [Docker][docker] -4. [MySQL][mysql] +4. [PostgreSQL][postgres] 5. [Service Center(optional)][service_center] 6. [Docker compose(optional)][docker_compose] 7. [Docker machine(optional)][docker_machine] @@ -29,7 +29,7 @@ You will need: [jdk]: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html [maven]: https://maven.apache.org/install.html [docker]: https://www.docker.com/get-docker -[mysql]: https://dev.mysql.com/downloads/ +[postgres]: https://www.postgresql.org/download/ [service_center]: https://github.com/apache/incubator-servicecomb-service-center [docker_compose]: https://docs.docker.com/compose/install/ [docker_machine]: https://docs.docker.com/machine/install-machine/ diff --git a/alpha/alpha-server/pom.xml b/alpha/alpha-server/pom.xml index 856d86c..ae894b8 100644 --- a/alpha/alpha-server/pom.xml +++ b/alpha/alpha-server/pom.xml @@ -67,18 +67,8 @@ <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> - <exclusions> - <exclusion> - <groupId>org.hibernate</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.eclipse.persistence</groupId> - <artifactId>org.eclipse.persistence.jpa</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>saga-persistence-jpa</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> diff --git a/docker-compose.yaml b/docker-compose.yaml index 8d3037b..1afc3fb 100755 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,18 +24,17 @@ services: ports: - "30100:30100" - mysql: - image: "mysql/mysql-server:5.7" - hostname: mysql + postgres: + image: "postgres" + hostname: postgres environment: - - MYSQL_ROOT_PASSWORD=password - - MYSQL_DATABASE=saga - - MYSQL_USER=saga - - MYSQL_PASSWORD=password + - POSTGRES_DB=saga + - POSTGRES_USER=saga + - POSTGRES_PASSWORD=password ports: - - "3306:3306" + - "5432:5432" healthcheck: - test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"] + test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"] interval: 30s timeout: 10s retries: 5 @@ -44,12 +43,12 @@ services: image: "saga-spring:0.0.2-SNAPSHOT" hostname: saga links: - - "mysql:mysql.servicecomb.io" + - "postgres:postgres.servicecomb.io" - "service-center:sc.servicecomb.io" environment: - JAVA_OPTS=-Dspring.profiles.active=prd,servicecomb -Dcse.service.registry.address=http://sc.servicecomb.io:30100 ports: - "8083:8080" depends_on: - mysql: + postgres: condition: service_healthy diff --git a/integration-tests/pack-tests/pom.xml b/integration-tests/pack-tests/pom.xml index f7b1d01..5c31c79 100644 --- a/integration-tests/pack-tests/pom.xml +++ b/integration-tests/pack-tests/pom.xml @@ -45,6 +45,10 @@ <dependencies> <dependency> <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>pack-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.servicecomb.saga</groupId> <artifactId>alpha-core</artifactId> </dependency> <dependency> @@ -81,17 +85,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> - <exclusions> - <exclusion> - <groupId>org.hibernate</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - <scope>test</scope> - </dependency> - <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <scope>test</scope> @@ -102,8 +95,9 @@ <scope>runtime</scope> </dependency> <dependency> - <groupId>org.eclipse.persistence</groupId> - <artifactId>org.eclipse.persistence.jpa</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>saga-persistence-jpa</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/EclipseLinkJpaConfiguration.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/EclipseLinkJpaConfiguration.java deleted file mode 100644 index 75d1a8c..0000000 --- a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/EclipseLinkJpaConfiguration.java +++ /dev/null @@ -1,52 +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.saga.integration.pack.tests; - -import java.util.Collections; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter; -import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; -import org.springframework.transaction.jta.JtaTransactionManager; - -@Configuration -@EntityScan(basePackages = "org.apache.servicecomb.saga.alpha") -class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { - EclipseLinkJpaConfiguration(DataSource dataSource, - JpaProperties properties, - ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) { - super(dataSource, properties, jtaTransactionManagerProvider); - } - - @Override - protected AbstractJpaVendorAdapter createJpaVendorAdapter() { - return new EclipseLinkJpaVendorAdapter(); - } - - @Override - protected Map<String, Object> getVendorProperties() { - return Collections.singletonMap("eclipselink.weaving", "false"); - } -} diff --git a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java index 9d1b23a..c49829c 100644 --- a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java +++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java @@ -23,10 +23,12 @@ import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.servicecomb.saga.omega.spring.EnableOmega; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; @EnableOmega @SpringBootApplication +@EntityScan(basePackages = "org.apache.servicecomb.saga.alpha") public class GreetingApplication { public static void main(String[] args) { SpringApplication.run(GreetingApplication.class, args); diff --git a/omega/omega-spring-tx/pom.xml b/omega/omega-spring-tx/pom.xml index 539335b..ec2ab6a 100644 --- a/omega/omega-spring-tx/pom.xml +++ b/omega/omega-spring-tx/pom.xml @@ -75,8 +75,8 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>saga-persistence-jpa</artifactId> <scope>test</scope> </dependency> <dependency> diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java index 9b7f474..c5c3d84 100644 --- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java +++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java @@ -21,13 +21,14 @@ import java.util.Objects; import javax.persistence.Entity; import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id - @GeneratedValue - private long id; + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; private String username; private String email; diff --git a/omega/omega-spring-tx/src/test/resources/schema.sql b/omega/omega-spring-tx/src/test/resources/schema.sql new file mode 100644 index 0000000..cbc4330 --- /dev/null +++ b/omega/omega-spring-tx/src/test/resources/schema.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS `User` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `username` varchar(36) NOT NULL, + `email` varchar(36) NOT NULL, + PRIMARY KEY (`id`) +) DEFAULT CHARSET=utf8; diff --git a/pom.xml b/pom.xml index 417e0ee..42b0a63 100755 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ <module>pack-contracts</module> <module>pack-common</module> <module>integration-tests</module> + <module>saga-persistence</module> </modules> <properties> @@ -210,6 +211,11 @@ <version>0.0.3-SNAPSHOT</version> </dependency> <dependency> + <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>saga-persistence-jpa</artifactId> + <version>0.0.3-SNAPSHOT</version> + </dependency> + <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> diff --git a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml index 5a7dc9d..6b07471 100644 --- a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml +++ b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml @@ -64,26 +64,25 @@ <configuration> <images> <image> - <name>mysql/mysql-server:5.7</name> - <alias>mysql</alias> + <name>postgres</name> + <alias>postgres</alias> <run> <env> - <MYSQL_ROOT_PASSWORD>password</MYSQL_ROOT_PASSWORD> - <MYSQL_DATABASE>saga</MYSQL_DATABASE> - <MYSQL_USER>saga</MYSQL_USER> - <MYSQL_PASSWORD>password</MYSQL_PASSWORD> + <POSTGRES_DB>saga</POSTGRES_DB> + <POSTGRES_USER>saga</POSTGRES_USER> + <POSTGRES_PASSWORD>password</POSTGRES_PASSWORD> </env> <wait> - <log>Starting MySQL 5.7</log> + <log>database system is ready to accept connections</log> <tcp> <ports> - <port>3306</port> + <port>5432</port> </ports> </tcp> <time>60000</time> </wait> <ports> - <port>mysql.port:3306</port> + <port>postgres.port:5432</port> </ports> </run> </image> @@ -181,7 +180,7 @@ </JAVA_OPTS> </env> <links> - <link>mysql:mysql.servicecomb.io</link> + <link>postgres:postgres.servicecomb.io</link> <link>payment:payment.servicecomb.io</link> <link>membership:membership.servicecomb.io</link> <link>inventory:inventory.servicecomb.io</link> @@ -200,7 +199,7 @@ <port>saga.port:8080</port> </ports> <dependsOn> - <dependsOn>mysql</dependsOn> + <dependsOn>postgres</dependsOn> </dependsOn> </run> </image> diff --git a/saga-demo/conditional-transaction-demo/docker-compose.yaml b/saga-demo/conditional-transaction-demo/docker-compose.yaml index 11e20d5..45c72c3 100755 --- a/saga-demo/conditional-transaction-demo/docker-compose.yaml +++ b/saga-demo/conditional-transaction-demo/docker-compose.yaml @@ -18,18 +18,17 @@ version: '2.1' services: - mysql: - image: "mysql/mysql-server:5.7" - hostname: mysql + postgres: + image: "postgres" + hostname: postgres environment: - - MYSQL_ROOT_PASSWORD=password - - MYSQL_DATABASE=saga - - MYSQL_USER=saga - - MYSQL_PASSWORD=password + - POSTGRES_DB=saga + - POSTGRES_USER=saga + - POSTGRES_PASSWORD=password ports: - - "3306:3306" + - "5432:5432" healthcheck: - test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"] + test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"] interval: 30s timeout: 10s retries: 5 @@ -62,7 +61,7 @@ services: image: "saga-spring:0.0.3-SNAPSHOT" hostname: saga links: - - "mysql:mysql.servicecomb.io" + - "postgres:postgres.servicecomb.io" - "payment:payment.servicecomb.io" - "membership:membership.servicecomb.io" - "inventory:inventory.servicecomb.io" @@ -72,5 +71,5 @@ services: ports: - "8083:8080" depends_on: - mysql: + postgres: condition: service_healthy diff --git a/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml b/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml index 59b60ed..81594b4 100644 --- a/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml +++ b/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml @@ -82,26 +82,25 @@ </run> </image> <image> - <name>mysql/mysql-server:5.7</name> - <alias>mysql</alias> + <name>postgres</name> + <alias>postgres</alias> <run> <env> - <MYSQL_ROOT_PASSWORD>password</MYSQL_ROOT_PASSWORD> - <MYSQL_DATABASE>saga</MYSQL_DATABASE> - <MYSQL_USER>saga</MYSQL_USER> - <MYSQL_PASSWORD>password</MYSQL_PASSWORD> + <POSTGRES_DB>saga</POSTGRES_DB> + <POSTGRES_USER>saga</POSTGRES_USER> + <POSTGRES_PASSWORD>password</POSTGRES_PASSWORD> </env> <wait> - <log>Starting MySQL 5.7</log> + <log>database system is ready to accept connections</log> <tcp> <ports> - <port>3306</port> + <port>5432</port> </ports> </tcp> <time>60000</time> </wait> <ports> - <port>mysql.port:3306</port> + <port>postgres.port:5432</port> </ports> </run> </image> @@ -213,7 +212,7 @@ </env> <links> <link>service-center:sc.servicecomb.io</link> - <link>mysql:mysql.servicecomb.io</link> + <link>postgres:postgres.servicecomb.io</link> <link>car:car.servicecomb.io</link> <link>flight:flight.servicecomb.io</link> <link>hotel:hotel.servicecomb.io</link> @@ -232,7 +231,7 @@ <port>saga.port:8080</port> </ports> <dependsOn> - <dependsOn>mysql</dependsOn> + <dependsOn>postgres</dependsOn> </dependsOn> </run> </image> diff --git a/saga-demo/dependency-free-transaction-demo/docker-compose.yaml b/saga-demo/dependency-free-transaction-demo/docker-compose.yaml index 523a322..3ad2cc7 100755 --- a/saga-demo/dependency-free-transaction-demo/docker-compose.yaml +++ b/saga-demo/dependency-free-transaction-demo/docker-compose.yaml @@ -24,18 +24,17 @@ services: ports: - "30100:30100" - mysql: - image: "mysql/mysql-server:5.7" - hostname: mysql + postgres: + image: "postgres" + hostname: postgres environment: - - MYSQL_ROOT_PASSWORD=password - - MYSQL_DATABASE=saga - - MYSQL_USER=saga - - MYSQL_PASSWORD=password + - POSTGRES_DB=saga + - POSTGRES_USER=saga + - POSTGRES_PASSWORD=password ports: - - "3306:3306" + - "5432:5432" healthcheck: - test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"] + test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"] interval: 30s timeout: 10s retries: 5 @@ -76,7 +75,7 @@ services: image: "saga-spring:0.0.3-SNAPSHOT" hostname: saga links: - - "mysql:mysql.servicecomb.io" + - "postgres:postgres.servicecomb.io" - "service-center:sc.servicecomb.io" - "car-rental-service:car.servicecomb.io" - "flight-booking-service:flight.servicecomb.io" @@ -87,7 +86,7 @@ services: ports: - "8080:8080" depends_on: - mysql: + postgres: condition: service_healthy web: diff --git a/saga-persistence/pom.xml b/saga-persistence/pom.xml new file mode 100644 index 0000000..5f7bc20 --- /dev/null +++ b/saga-persistence/pom.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ 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. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>saga</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <version>0.0.3-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>saga-persistence</artifactId> + <packaging>pom</packaging> + <modules> + <module>saga-persistence-jpa</module> + </modules> + + +</project> diff --git a/saga-persistence/saga-persistence-jpa/pom.xml b/saga-persistence/saga-persistence-jpa/pom.xml new file mode 100644 index 0000000..3373aec --- /dev/null +++ b/saga-persistence/saga-persistence-jpa/pom.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ 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. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>saga-persistence</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <version>0.0.3-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>saga-persistence-jpa</artifactId> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-dependencies</artifactId> + <version>${spring.boot.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + <exclusions> + <exclusion> + <groupId>org.hibernate</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.eclipse.persistence</groupId> + <artifactId>org.eclipse.persistence.jpa</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>com.ethlo.persistence.tools</groupId> + <artifactId>eclipselink-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + +</project> diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/EclipseLinkJpaConfiguration.java b/saga-persistence/saga-persistence-jpa/src/main/java/org/apache/servicecomb/saga/persistence/jpa/EclipseLinkJpaConfiguration.java similarity index 93% rename from alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/EclipseLinkJpaConfiguration.java rename to saga-persistence/saga-persistence-jpa/src/main/java/org/apache/servicecomb/saga/persistence/jpa/EclipseLinkJpaConfiguration.java index 4061c49..1ad7879 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/EclipseLinkJpaConfiguration.java +++ b/saga-persistence/saga-persistence-jpa/src/main/java/org/apache/servicecomb/saga/persistence/jpa/EclipseLinkJpaConfiguration.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.saga.alpha.server; +package org.apache.servicecomb.saga.persistence.jpa; import java.util.Collections; import java.util.Map; @@ -31,7 +31,7 @@ import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; import org.springframework.transaction.jta.JtaTransactionManager; @Configuration -class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { +public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { EclipseLinkJpaConfiguration(DataSource dataSource, JpaProperties properties, ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) { diff --git a/saga-spring/src/main/resources/application.yaml b/saga-persistence/saga-persistence-jpa/src/main/resources/META-INF/spring.factories similarity index 69% copy from saga-spring/src/main/resources/application.yaml copy to saga-persistence/saga-persistence-jpa/src/main/resources/META-INF/spring.factories index fb71738..1d6b850 100644 --- a/saga-spring/src/main/resources/application.yaml +++ b/saga-persistence/saga-persistence-jpa/src/main/resources/META-INF/spring.factories @@ -14,24 +14,5 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -spring: - profiles: prd - datasource: - username: saga - password: password - driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://mysql.servicecomb.io:3306/saga?useSSL=false - platform: mysql - continue-on-error: true - jpa: - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL5Dialect - hibernate: - ddl-auto: none - -saga: - thread: - count: 32 - retry: - delay: 3000 +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.apache.servicecomb.saga.persistence.jpa.EclipseLinkJpaConfiguration diff --git a/saga-spring/pom.xml b/saga-spring/pom.xml index 48be07b..b96b2a9 100755 --- a/saga-spring/pom.xml +++ b/saga-spring/pom.xml @@ -103,12 +103,17 @@ <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> + <groupId>javax.persistence</groupId> + <artifactId>javax.persistence-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.servicecomb.saga</groupId> + <artifactId>saga-persistence-jpa</artifactId> </dependency> <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <scope>runtime</scope> </dependency> <dependency> <groupId>io.kamon</groupId> diff --git a/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java index 420655a..6be3501 100644 --- a/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java +++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java @@ -21,13 +21,14 @@ import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class SagaEventEntity { @Id - @GeneratedValue - private long id; + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; private String sagaId; private Date creationTime; private String type; diff --git a/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java index 45cfe8c..1f1132b 100644 --- a/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java +++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java @@ -28,9 +28,9 @@ import org.springframework.data.repository.PagingAndSortingRepository; interface SagaEventRepo extends PagingAndSortingRepository<SagaEventEntity, Long> { // TODO: 8/21/2017 replace with hql? - @Query(value = "SELECT * FROM saga_event_entity " - + "WHERE saga_id NOT IN (" - + " SELECT DISTINCT saga_id FROM saga_event_entity" + @Query(value = "SELECT * FROM SagaEventEntity " + + "WHERE sagaId NOT IN (" + + " SELECT DISTINCT sagaId FROM SagaEventEntity" + " WHERE type = 'SagaEndedEvent'" + ")", nativeQuery = true) List<SagaEventEntity> findIncompleteSagaEventsGroupBySagaId(); diff --git a/saga-spring/src/main/resources/application.yaml b/saga-spring/src/main/resources/application.yaml index fb71738..6ed0d9d 100644 --- a/saga-spring/src/main/resources/application.yaml +++ b/saga-spring/src/main/resources/application.yaml @@ -19,16 +19,9 @@ spring: datasource: username: saga password: password - driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://mysql.servicecomb.io:3306/saga?useSSL=false - platform: mysql - continue-on-error: true - jpa: - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL5Dialect - hibernate: - ddl-auto: none + url: jdbc:postgresql://postgres.servicecomb.io:5432/saga?useSSL=false + platform: postgresql +# continue-on-error: true saga: thread: diff --git a/saga-spring/src/main/resources/schema-mysql.sql b/saga-spring/src/main/resources/schema-mysql.sql deleted file mode 100644 index cf713ad..0000000 --- a/saga-spring/src/main/resources/schema-mysql.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TABLE IF NOT EXISTS `saga_event_entity` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `saga_id` varchar(36) NOT NULL, - `creation_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), - `type` varchar(50) NOT NULL, - `content_json` JSON NOT NULL, - PRIMARY KEY (`id`), - INDEX `running_sagas_index` (`saga_id`, `type`) -) DEFAULT CHARSET=utf8; diff --git a/saga-spring/src/main/resources/schema-postgresql.sql b/saga-spring/src/main/resources/schema-postgresql.sql new file mode 100644 index 0000000..3900fd3 --- /dev/null +++ b/saga-spring/src/main/resources/schema-postgresql.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS SagaEventEntity ( + id BIGSERIAL PRIMARY KEY, + sagaId varchar(36) NOT NULL, + creationTime timestamp(6) NOT NULL DEFAULT CURRENT_DATE, + type varchar(50) NOT NULL, + contentJson JSON NOT NULL +); + +CREATE INDEX IF NOT EXISTS running_sagas_index ON SagaEventEntity (sagaId, type); diff --git a/saga-spring/src/test/resources/data.sql b/saga-spring/src/test/resources/data.sql index 6ace806..d0db33e 100644 --- a/saga-spring/src/test/resources/data.sql +++ b/saga-spring/src/test/resources/data.sql @@ -1,12 +1,12 @@ -DROP TABLE IF EXISTS saga_event_entity; +DROP TABLE IF EXISTS SagaEventEntity; -CREATE TABLE `saga_event_entity` ( +CREATE TABLE `SagaEventEntity` ( `id` bigint NOT NULL AUTO_INCREMENT, - `saga_id` varchar(36) NOT NULL, - `creation_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `sagaId` varchar(36) NOT NULL, + `creationTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `type` varchar(50) NOT NULL, - `content_json` clob NOT NULL DEFAULT '{}', + `contentJson` clob NOT NULL DEFAULT '{}', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; - CREATE INDEX running_sagas_index ON saga_event_entity(saga_id, type); + CREATE INDEX running_sagas_index ON sagaEventEntity(sagaId, type); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
