This is an automated email from the git hooks/post-receive script. New commit to branch develop-5.x in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f0b461c6bec65f4390215538f20bac0ecdf48304 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 15 16:38:54 2016 +0100 Le transfert de 4 nouvelles marées de droite à gauche n'aboutit pas (Fixes #8887) --- entities/pom.xml | 20 ++++++++--- .../fr/ird/observe/ObserveTopiaConfiguration.java | 15 ++++++--- pom.xml | 20 +++++++++-- .../services/topia/ObserveServiceFactoryTopia.java | 2 -- topia-extension/pom.xml | 8 +++-- .../sql/batch/TopiaSqlBatchServiceImpl.java | 39 +++++++++++----------- .../sql/batch/actions/AbstractSqlAction.java | 2 +- .../sql/batch/actions/ReplicateTablesAction.java | 22 +++++++++--- 8 files changed, 89 insertions(+), 39 deletions(-) diff --git a/entities/pom.xml b/entities/pom.xml index 3ada1e5..aa110dd 100644 --- a/entities/pom.xml +++ b/entities/pom.xml @@ -22,7 +22,8 @@ <http://www.gnu.org/licenses/lgpl-3.0.html>. #L% --> -<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"> +<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"> <modelVersion>4.0.0</modelVersion> <parent> @@ -97,9 +98,17 @@ <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> + </dependency--> + <dependency> + <groupId>com.zaxxer</groupId> + <artifactId>HikariCP</artifactId> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-hikaricp</artifactId> </dependency> <!-- test --> @@ -178,12 +187,13 @@ <phase>generate-sources</phase> <configuration> <target> - <copy verbose="true" failonerror="true" overwrite="true" filtering="true" todir="${project.build.directory}/xmi"> + <copy verbose="true" failonerror="true" overwrite="true" filtering="true" + todir="${project.build.directory}/xmi"> <filterset> - <filter value="${observe.model.version}" token="observe.model.version" /> + <filter value="${observe.model.version}" token="observe.model.version"/> </filterset> <fileset dir="${basedir}/src/main/xmi"> - <include name="*.ini" /> + <include name="*.ini"/> </fileset> </copy> </target> diff --git a/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java b/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java index 7793463..d5a8e41 100644 --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java @@ -22,6 +22,7 @@ package fr.ird.observe; * #L% */ +import org.hibernate.hikaricp.internal.HikariCPConnectionProvider; import org.nuiton.topia.persistence.BeanTopiaConfiguration; import org.nuiton.topia.persistence.HibernateAvailableSettings; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; @@ -41,10 +42,16 @@ public class ObserveTopiaConfiguration extends BeanTopiaConfiguration { super(jdbcConfiguration); this.h2Configuration = h2Configuration; - hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); - hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500"); - hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_STATEMENTS, "500"); - hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_TIMEOUT, "100"); + hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, HikariCPConnectionProvider.class.getName()); + hibernateExtraConfiguration.put("hibernate.hikari.minimumIdle", "2"); + hibernateExtraConfiguration.put("hibernate.hikari.maximumPoolSize", "20"); + hibernateExtraConfiguration.put("hibernate.hikari.autoCommit", "false"); + hibernateExtraConfiguration.put("hibernate.hikari.registerMbeans", "true"); + +// hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); +// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500"); +// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_STATEMENTS, "500"); +// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_TIMEOUT, "100"); } public boolean isH2Configuration() { diff --git a/pom.xml b/pom.xml index 7b6c994..9dc2fc3 100644 --- a/pom.xml +++ b/pom.xml @@ -514,6 +514,10 @@ <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> </exclusion> + <exclusion> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-c3p0</artifactId> + </exclusion> </exclusions> </dependency> @@ -566,19 +570,31 @@ <version>${hibernateVersion}</version> </dependency> - <dependency> + <!--dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>${hibernateVersion}</version> <scope>runtime</scope> + </dependency--> + + <dependency> + <groupId>com.zaxxer</groupId> + <artifactId>HikariCP</artifactId> + <version>2.5.1</version> </dependency> <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-hikaricp</artifactId> + <version>${hibernateVersion}</version> + </dependency> + + <!--dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> <scope>runtime</scope> - </dependency> + </dependency--> <!-- Map --> diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceFactoryTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceFactoryTopia.java index d08d1b4..384e452 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceFactoryTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceFactoryTopia.java @@ -256,7 +256,6 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { ObserveTopiaApplicationContext source = serviceContext.getTopiaApplicationContext(); - long t0 = TimeLog.getTime(); try (ObserveTopiaPersistenceContext topiaPersistenceContext = source.newPersistenceContext()) { @@ -277,7 +276,6 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { serviceContext.setTopiaPersistenceContext(null); - TIME_LOG.log(t0, "invokeMethodWithTransaction", method.getName()); } diff --git a/topia-extension/pom.xml b/topia-extension/pom.xml index 4fc1263..eff1a43 100644 --- a/topia-extension/pom.xml +++ b/topia-extension/pom.xml @@ -82,11 +82,15 @@ </dependency> <dependency> + <groupId>com.zaxxer</groupId> + <artifactId>HikariCP</artifactId> + </dependency> + + <!--dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> - <version>0.9.5.2</version> <scope>compile</scope> - </dependency> + </dependency--> <!-- test --> <dependency> diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java index 4509764..4bd056b 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java @@ -158,32 +158,33 @@ public class TopiaSqlBatchServiceImpl implements TopiaSqlBatchService { AbstractSqlRequest sqlRequest = sqlRequestIterator.next(); - AbstractSqlAction<?> action = createAction(sqlRequest); + try (AbstractSqlAction<?> action = createAction(sqlRequest)) { - action.run(); + action.run(); - Optional<Set<BlobsContainer.Builder>> optionalBlobsContainers = action.getBlobsContainersBuilder(); - if (optionalBlobsContainers.isPresent()) { - Set<BlobsContainer.Builder> blobsContainers = optionalBlobsContainers.get(); + Optional<Set<BlobsContainer.Builder>> optionalBlobsContainers = action.getBlobsContainersBuilder(); + if (optionalBlobsContainers.isPresent()) { + Set<BlobsContainer.Builder> blobsContainers = optionalBlobsContainers.get(); - for (BlobsContainer.Builder blobsContainerBuilder : blobsContainers) { - String tableName = blobsContainerBuilder.getTableName(); - String columnName = blobsContainerBuilder.getColumnName(); + for (BlobsContainer.Builder blobsContainerBuilder : blobsContainers) { + String tableName = blobsContainerBuilder.getTableName(); + String columnName = blobsContainerBuilder.getColumnName(); - String key = tableName + "##" + columnName; - if (blobContainersBuilder.containsKey(key)) { - BlobsContainer.Builder blobsContainerBuilder1 = blobContainersBuilder.get(key); - blobsContainerBuilder1.addAllBlob(blobsContainerBuilder.build().getBlobsById()); - } else { - blobContainersBuilder.put(tableName, blobsContainerBuilder); + String key = tableName + "##" + columnName; + if (blobContainersBuilder.containsKey(key)) { + BlobsContainer.Builder blobsContainerBuilder1 = blobContainersBuilder.get(key); + blobsContainerBuilder1.addAllBlob(blobsContainerBuilder.build().getBlobsById()); + } else { + blobContainersBuilder.put(tableName, blobsContainerBuilder); + } } } - } - //FIXME Review transaction management + //FIXME Review transaction management - hasNext = sqlRequestIterator.hasNext(); - if (!hasNext) { - action.commit(); + hasNext = sqlRequestIterator.hasNext(); + if (!hasNext) { + action.commit(); + } } } diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlAction.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlAction.java index 353f859..9da20dd 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlAction.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlAction.java @@ -178,7 +178,7 @@ public abstract class AbstractSqlAction<R extends AbstractSqlRequest> implements } } if (error != null) { - throw new RuntimeException("Could not close", error); + throw new TopiaException("Could not close", error); } } diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java index 8871299..8ec3404 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java @@ -22,7 +22,7 @@ package org.nuiton.topia.service.sql.batch.actions; * #L% */ -import com.mchange.v2.c3p0.impl.NewProxyConnection; +import com.zaxxer.hikari.pool.HikariProxyConnection; import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -212,11 +212,25 @@ public class ReplicateTablesAction extends AbstractTablesAction<ReplicateTablesR if (connection instanceof PgConnection) { pgConnection = (PGConnection) connection; - } else if (connection instanceof NewProxyConnection) { + } +// else if (connection instanceof NewProxyConnection) { +// +// NewProxyConnection connection1 = (NewProxyConnection) connection; +// try { +// Field field = connection1.getClass().getDeclaredField("inner"); +// field.setAccessible(true); +// pgConnection = (PGConnection) field.get(connection1); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// +// } + else if (connection instanceof HikariProxyConnection) { + + HikariProxyConnection connection1 = (HikariProxyConnection) connection; - NewProxyConnection connection1 = (NewProxyConnection) connection; try { - Field field = connection1.getClass().getDeclaredField("inner"); + Field field = connection1.getClass().getSuperclass().getDeclaredField("delegate"); field.setAccessible(true); pgConnection = (PGConnection) field.get(connection1); } catch (Exception e) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.