You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/04/26 17:13:31 UTC
[1/6] camel git commit: Changed log level on entity manager refresh
Repository: camel
Updated Branches:
refs/heads/camel-2.17.x 82bf20aef -> a8fe438c8
refs/heads/camel-2.18.x 40da97091 -> 6b10852da
refs/heads/master 667c38992 -> ba14e8366
Changed log level on entity manager refresh
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ba14e836
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ba14e836
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ba14e836
Branch: refs/heads/master
Commit: ba14e8366e951355c0c0e4aefa404ff83892c09d
Parents: 66346a9
Author: James Thomas <ji...@gmail.com>
Authored: Wed Apr 26 08:13:36 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:06:20 2017 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/camel/component/jpa/JpaConsumer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ba14e836/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index fd9cf3d..a426077 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -154,7 +154,7 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
} catch (Exception e) {
// Potentially EntityManager could be in an inconsistent state after transaction rollback,
// so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ LOG.debug("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
entityManager.close();
entityManager = null;
throw new PersistenceException(e);
[4/6] camel git commit: Changed log level on entity manager refresh
Posted by da...@apache.org.
Changed log level on entity manager refresh
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6b10852d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6b10852d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6b10852d
Branch: refs/heads/camel-2.18.x
Commit: 6b10852da2ca3512ef4e6cff1f530945a979b874
Parents: 62988ca
Author: James Thomas <ji...@gmail.com>
Authored: Wed Apr 26 08:13:36 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:08:29 2017 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/camel/component/jpa/JpaConsumer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/6b10852d/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index 100b9bb..cf183d9 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -154,7 +154,7 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
} catch (Exception e) {
// Potentially EntityManager could be in an inconsistent state after transaction rollback,
// so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ LOG.debug("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
entityManager.close();
entityManager = null;
throw new PersistenceException(e);
[3/6] camel git commit: Refresh entity manager on PersistenceException
Posted by da...@apache.org.
Refresh entity manager on PersistenceException
The entity manager needs to be refreshed on all PersistenceExceptions
to ensure connections are being taken/returned from a connection pooled
data source. This is especially important in cases where connection to
the database is temporarily broken.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/62988ca4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/62988ca4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/62988ca4
Branch: refs/heads/camel-2.18.x
Commit: 62988ca426992bd72e8b94aea7274aaf5d152bda
Parents: 40da970
Author: James Thomas <ji...@gmail.com>
Authored: Tue Apr 25 06:23:55 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:08:22 2017 +0200
----------------------------------------------------------------------
.../apache/camel/component/jpa/JpaConsumer.java | 102 ++++++++++---------
1 file changed, 53 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/62988ca4/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index f85d650..100b9bb 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -97,64 +97,68 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
LOG.trace("Recreated EntityManager {} on {}", entityManager, this);
}
- Object messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
- public Object doInTransaction(TransactionStatus status) {
- if (getEndpoint().isJoinTransaction()) {
- entityManager.joinTransaction();
- }
+ Object messagePolled = null;
+ try {
+ messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
+ public Object doInTransaction(TransactionStatus status) {
+ if (getEndpoint().isJoinTransaction()) {
+ entityManager.joinTransaction();
+ }
- Queue<DataHolder> answer = new LinkedList<DataHolder>();
+ Queue<DataHolder> answer = new LinkedList<DataHolder>();
- Query query = getQueryFactory().createQuery(entityManager);
- configureParameters(query);
- LOG.trace("Created query {}", query);
+ Query query = getQueryFactory().createQuery(entityManager);
+ configureParameters(query);
+ LOG.trace("Created query {}", query);
- List<?> results = query.getResultList();
- LOG.trace("Got result list from query {}", results);
+ List<?> results = query.getResultList();
+ LOG.trace("Got result list from query {}", results);
- for (Object result : results) {
- DataHolder holder = new DataHolder();
- holder.manager = entityManager;
- holder.result = result;
- holder.exchange = createExchange(result, entityManager);
- answer.add(holder);
- }
+ for (Object result : results) {
+ DataHolder holder = new DataHolder();
+ holder.manager = entityManager;
+ holder.result = result;
+ holder.exchange = createExchange(result, entityManager);
+ answer.add(holder);
+ }
- PersistenceException cause = null;
- int messagePolled = 0;
- try {
- messagePolled = processBatch(CastUtils.cast(answer));
- } catch (Exception e) {
- if (e instanceof PersistenceException) {
- cause = (PersistenceException) e;
- } else {
- cause = new PersistenceException(e);
+ PersistenceException cause = null;
+ int messagePolled = 0;
+ try {
+ messagePolled = processBatch(CastUtils.cast(answer));
+ } catch (Exception e) {
+ if (e instanceof PersistenceException) {
+ cause = (PersistenceException) e;
+ } else {
+ cause = new PersistenceException(e);
+ }
}
- }
- if (cause != null) {
- if (!isTransacted()) {
- LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
- } else {
- // Potentially EntityManager could be in an inconsistent state after transaction rollback,
- // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
- entityManager.close();
- entityManager = null;
-
- // rollback all by throwning exception
- throw cause;
+ if (cause != null) {
+ if (!isTransacted()) {
+ LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
+ } else {
+ // rollback all by throwning exception
+ throw cause;
+ }
}
- }
- // commit
- LOG.debug("Flushing EntityManager");
- entityManager.flush();
- // must clear after flush
- entityManager.clear();
- return messagePolled;
- }
- });
+ // commit
+ LOG.debug("Flushing EntityManager");
+ entityManager.flush();
+ // must clear after flush
+ entityManager.clear();
+ return messagePolled;
+ }
+ });
+ } catch (Exception e) {
+ // Potentially EntityManager could be in an inconsistent state after transaction rollback,
+ // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
+ LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ entityManager.close();
+ entityManager = null;
+ throw new PersistenceException(e);
+ }
return getEndpoint().getCamelContext().getTypeConverter().convertTo(int.class, messagePolled);
}
[2/6] camel git commit: Refresh entity manager on PersistenceException
Posted by da...@apache.org.
Refresh entity manager on PersistenceException
The entity manager needs to be refreshed on all PersistenceExceptions
to ensure connections are being taken/returned from a connection pooled
data source. This is especially important in cases where connection to
the database is temporarily broken.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/66346a98
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/66346a98
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/66346a98
Branch: refs/heads/master
Commit: 66346a98efd2d2ad51518833ecf3f131079e1936
Parents: 667c389
Author: James Thomas <ji...@gmail.com>
Authored: Tue Apr 25 06:23:55 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:06:20 2017 +0200
----------------------------------------------------------------------
.../apache/camel/component/jpa/JpaConsumer.java | 102 ++++++++++---------
1 file changed, 53 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/66346a98/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index 24b5b21..fd9cf3d 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -97,64 +97,68 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
LOG.trace("Recreated EntityManager {} on {}", entityManager, this);
}
- Object messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
- public Object doInTransaction(TransactionStatus status) {
- if (getEndpoint().isJoinTransaction()) {
- entityManager.joinTransaction();
- }
+ Object messagePolled = null;
+ try {
+ messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
+ public Object doInTransaction(TransactionStatus status) {
+ if (getEndpoint().isJoinTransaction()) {
+ entityManager.joinTransaction();
+ }
- Queue<DataHolder> answer = new LinkedList<DataHolder>();
+ Queue<DataHolder> answer = new LinkedList<DataHolder>();
- Query query = getQueryFactory().createQuery(entityManager);
- configureParameters(query);
- LOG.trace("Created query {}", query);
+ Query query = getQueryFactory().createQuery(entityManager);
+ configureParameters(query);
+ LOG.trace("Created query {}", query);
- List<?> results = query.getResultList();
- LOG.trace("Got result list from query {}", results);
+ List<?> results = query.getResultList();
+ LOG.trace("Got result list from query {}", results);
- for (Object result : results) {
- DataHolder holder = new DataHolder();
- holder.manager = entityManager;
- holder.result = result;
- holder.exchange = createExchange(result, entityManager);
- answer.add(holder);
- }
+ for (Object result : results) {
+ DataHolder holder = new DataHolder();
+ holder.manager = entityManager;
+ holder.result = result;
+ holder.exchange = createExchange(result, entityManager);
+ answer.add(holder);
+ }
- PersistenceException cause = null;
- int messagePolled = 0;
- try {
- messagePolled = processBatch(CastUtils.cast(answer));
- } catch (Exception e) {
- if (e instanceof PersistenceException) {
- cause = (PersistenceException) e;
- } else {
- cause = new PersistenceException(e);
+ PersistenceException cause = null;
+ int messagePolled = 0;
+ try {
+ messagePolled = processBatch(CastUtils.cast(answer));
+ } catch (Exception e) {
+ if (e instanceof PersistenceException) {
+ cause = (PersistenceException) e;
+ } else {
+ cause = new PersistenceException(e);
+ }
}
- }
- if (cause != null) {
- if (!isTransacted()) {
- LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
- } else {
- // Potentially EntityManager could be in an inconsistent state after transaction rollback,
- // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
- entityManager.close();
- entityManager = null;
-
- // rollback all by throwning exception
- throw cause;
+ if (cause != null) {
+ if (!isTransacted()) {
+ LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
+ } else {
+ // rollback all by throwning exception
+ throw cause;
+ }
}
- }
- // commit
- LOG.debug("Flushing EntityManager");
- entityManager.flush();
- // must clear after flush
- entityManager.clear();
- return messagePolled;
- }
- });
+ // commit
+ LOG.debug("Flushing EntityManager");
+ entityManager.flush();
+ // must clear after flush
+ entityManager.clear();
+ return messagePolled;
+ }
+ });
+ } catch (Exception e) {
+ // Potentially EntityManager could be in an inconsistent state after transaction rollback,
+ // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
+ LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ entityManager.close();
+ entityManager = null;
+ throw new PersistenceException(e);
+ }
return getEndpoint().getCamelContext().getTypeConverter().convertTo(int.class, messagePolled);
}
[5/6] camel git commit: Refresh entity manager on PersistenceException
Posted by da...@apache.org.
Refresh entity manager on PersistenceException
The entity manager needs to be refreshed on all PersistenceExceptions
to ensure connections are being taken/returned from a connection pooled
data source. This is especially important in cases where connection to
the database is temporarily broken.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6514a554
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6514a554
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6514a554
Branch: refs/heads/camel-2.17.x
Commit: 6514a5548c92d3a7d05c4f940390de57bb942005
Parents: 82bf20a
Author: James Thomas <ji...@gmail.com>
Authored: Tue Apr 25 06:23:55 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:10:48 2017 +0200
----------------------------------------------------------------------
.../apache/camel/component/jpa/JpaConsumer.java | 102 ++++++++++---------
1 file changed, 53 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/6514a554/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index 1e295e2..2fc750a 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -97,64 +97,68 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
LOG.trace("Recreated EntityManager {} on {}", entityManager, this);
}
- Object messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
- public Object doInTransaction(TransactionStatus status) {
- if (getEndpoint().isJoinTransaction()) {
- entityManager.joinTransaction();
- }
+ Object messagePolled = null;
+ try {
+ messagePolled = transactionTemplate.execute(new TransactionCallback<Object>() {
+ public Object doInTransaction(TransactionStatus status) {
+ if (getEndpoint().isJoinTransaction()) {
+ entityManager.joinTransaction();
+ }
- Queue<DataHolder> answer = new LinkedList<DataHolder>();
+ Queue<DataHolder> answer = new LinkedList<DataHolder>();
- Query query = getQueryFactory().createQuery(entityManager);
- configureParameters(query);
- LOG.trace("Created query {}", query);
+ Query query = getQueryFactory().createQuery(entityManager);
+ configureParameters(query);
+ LOG.trace("Created query {}", query);
- List<?> results = query.getResultList();
- LOG.trace("Got result list from query {}", results);
+ List<?> results = query.getResultList();
+ LOG.trace("Got result list from query {}", results);
- for (Object result : results) {
- DataHolder holder = new DataHolder();
- holder.manager = entityManager;
- holder.result = result;
- holder.exchange = createExchange(result, entityManager);
- answer.add(holder);
- }
+ for (Object result : results) {
+ DataHolder holder = new DataHolder();
+ holder.manager = entityManager;
+ holder.result = result;
+ holder.exchange = createExchange(result, entityManager);
+ answer.add(holder);
+ }
- PersistenceException cause = null;
- int messagePolled = 0;
- try {
- messagePolled = processBatch(CastUtils.cast(answer));
- } catch (Exception e) {
- if (e instanceof PersistenceException) {
- cause = (PersistenceException) e;
- } else {
- cause = new PersistenceException(e);
+ PersistenceException cause = null;
+ int messagePolled = 0;
+ try {
+ messagePolled = processBatch(CastUtils.cast(answer));
+ } catch (Exception e) {
+ if (e instanceof PersistenceException) {
+ cause = (PersistenceException) e;
+ } else {
+ cause = new PersistenceException(e);
+ }
}
- }
- if (cause != null) {
- if (!isTransacted()) {
- LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
- } else {
- // Potentially EntityManager could be in an inconsistent state after transaction rollback,
- // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
- entityManager.close();
- entityManager = null;
-
- // rollback all by throwning exception
- throw cause;
+ if (cause != null) {
+ if (!isTransacted()) {
+ LOG.warn("Error processing last message due: {}. Will commit all previous successful processed message, and ignore this last failure.", cause.getMessage(), cause);
+ } else {
+ // rollback all by throwning exception
+ throw cause;
+ }
}
- }
- // commit
- LOG.debug("Flushing EntityManager");
- entityManager.flush();
- // must clear after flush
- entityManager.clear();
- return messagePolled;
- }
- });
+ // commit
+ LOG.debug("Flushing EntityManager");
+ entityManager.flush();
+ // must clear after flush
+ entityManager.clear();
+ return messagePolled;
+ }
+ });
+ } catch (Exception e) {
+ // Potentially EntityManager could be in an inconsistent state after transaction rollback,
+ // so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
+ LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ entityManager.close();
+ entityManager = null;
+ throw new PersistenceException(e);
+ }
return getEndpoint().getCamelContext().getTypeConverter().convertTo(int.class, messagePolled);
}
[6/6] camel git commit: Changed log level on entity manager refresh
Posted by da...@apache.org.
Changed log level on entity manager refresh
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a8fe438c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a8fe438c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a8fe438c
Branch: refs/heads/camel-2.17.x
Commit: a8fe438c80c98a85a49b1477d45f1950ddac3eba
Parents: 6514a55
Author: James Thomas <ji...@gmail.com>
Authored: Wed Apr 26 08:13:36 2017 -0500
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 19:10:55 2017 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/camel/component/jpa/JpaConsumer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/a8fe438c/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
index 2fc750a..038ad73 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
@@ -154,7 +154,7 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer {
} catch (Exception e) {
// Potentially EntityManager could be in an inconsistent state after transaction rollback,
// so disposing it to have it recreated in next poll. cf. Java Persistence API 3.3.2 Transaction Rollback
- LOG.info("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
+ LOG.debug("Disposing EntityManager {} on {} due to coming transaction rollback", entityManager, this);
entityManager.close();
entityManager = null;
throw new PersistenceException(e);