You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by se...@apache.org on 2018/01/17 10:02:29 UTC
[incubator-servicecomb-saga] 03/03: SCB-249 replaced mysql with
postgres to comply with APL2 in original saga
This is an automated email from the ASF dual-hosted git repository.
seanyinx pushed a commit to branch SCB-249_apl_compliance
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 2ff73d17d49df769dd7c91ee6eadcf05c2a58261
Author: seanyinx <se...@huawei.com>
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 <se...@huawei.com>
---
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
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.