FYI: https://issues.apache.org/jira/browse/OPENJPA-2742

Regards.

On 28/06/2018 15:56, Francesco Chicchiriccò wrote:
On 28/06/2018 15:53, Francesco Chicchiriccò wrote:
On 28/06/2018 15:26, Jonathan Gallimore wrote:
Is there an easy way to try it out? I'd be interested in giving it a go.

You need to run the SchemaTool or the MappingTool from commandline - see

http://openjpa.apache.org/builds/3.0.0/apache-openjpa/docs/ref_guide_mapping.html#ref_guide_mapping_mappingtool_examples

or

http://openjpa.apache.org/builds/3.0.0/apache-openjpa/docs/ref_guide_schema_schematool.html

and pass the argument

-rollbackBeforeDDL false

(as it defaults to true).
Alternatively, set something like as

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(RollbackBeforeDDL=false)"/>

in your persistence.xml.

Without the patch (and the additional setting RollbackBeforeDDL=false), MySQL JDBC driver prior to 8 raises exception about connection closed during schema synchronization upon access to the first EntityManager instance.

Sorry, I realize it is not clear: the MySQL JDBC driver (any version) will raise the exception, but for versions prior to 8 you have the chance to add "relaxAutocommit=true" to the JDBC URL as a workaround.
With version 8, this option was removed.

Regards.

On Thu, Jun 28, 2018 at 2:25 PM, Romain Manni-Bucau <rmannibu...@gmail.com> wrote:

Patch looks aligned to what i had in mind.

+1

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/
rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-
ee-8-high-performance>


Le jeu. 28 juin 2018 à 15:23, Francesco Chicchiriccò <ilgro...@apache.org>
a écrit :

Hi,
I was trying to open a issue and attach my proposed patch there for
review, but JIRA appears to be unaccessible right now...

Anyway, you can find the patch (against trunk) at

https://paste.apache.org/qPBh

I have tried with MySQL 8 and it works just fine.

Please let me have your feedback before I commit it.
Regards.

On 27/06/2018 17:42, Romain Manni-Bucau wrote:
add a field _skipAutoCommit (find a better name ;)), add a setter
setSkipAutoCommit, call the setter in static utilities (run and main I
think), finally use the boolean and you are done

Le mer. 27 juin 2018 à 17:40, Francesco Chicchiriccò <
ilgro...@apache.org>
a écrit :

On 27/06/2018 17:32, Romain Manni-Bucau wrote:
Hi Francesco,

this is overall quite weird and I think other things will be broken
since, for instance, EE will try to do the same in all servers.
Anyway, for the config flag, the dictionary (_dict) can be a location
but I would prefer the schematool itself (like we already have droptables
etc)
+1
(but I have no idea about how to do that...)

Regards.

Le mer. 27 juin 2018 à 17:28, Francesco Chicchiriccò <
ilgro...@apache.org> a écrit :
Hi all,
I am resurrecting this old thread (for which I have found an even
older
reference [1]), because I have recently tried with the latest 8.x
MySQL
JDBC driver, which has removed the 'relaxAutoCommit' option [2]; as a result, now I am stuck exactly with the same error explained below.

I have tried by locally removing the lines


https://github.com/apache/openjpa/blob/2.4.x/openjpa-
jdbc/src/main/java/org/apache/openjpa/jdbc/schema/
SchemaTool.java#L1254-L1269
and everything works like a charm.

What would be the simplest way to make the lines above optional by
configuration?

Regards.

[1]
https://lists.apache.org/thread.html/53b0e83f37aa9a8f9c06a67fb7a948
487efe1a6941d4b9fae1404858@1394724819@%3Cusers.openjpa.apache.org%3E
[2]
https://dev.mysql.com/doc/connector-j/8.0/en/connector-
j-properties-changed.html
On 13/06/2017 12:57, Romain Manni-Bucau wrote:

My memory can be corrupted but what i had in mind was to add a flag
to
say to use autocommit or not (let's call it schemaToolMode = {AUTOCOMMIT,
COMMIT, BOTH}) and then in the persistence.xml
you can configure the dictionnary with this schemaToolMode property
(don't recall if getters/setters are mandatory but not a real blocker ;))
2017-06-13 12:44 GMT+02:00 Francesco Chicchiriccò <
ilgro...@apache.org
:
On 13/06/2017 12:37, Romain Manni-Bucau wrote:

Hi Francesco,

kind of have the same analyzis as you. Only mitigation I can do is
some pool enforce the autocommit mode and therefore autocommit is ignored and you still need commit(). Anyway since we have the dictionnary i guess
we can add a setting there?
Hi Romain,
this makes sense to me, even though I have no idea about how to
reference a specific Dictionary setting from SchemaTool...
Regards.


2017-06-13 12:32 GMT+02:00 Francesco Chicchiriccò <
ilgro...@apache.org>:
Hi all
at Syncope we have recently switched the application-managed db
pool to HikariCP [1]; our (quite intensive, I'd say) tests with H2 and
PostgresQL showed no issues at all.
Today I am testing MySQL and run unfortunately into a blocking
issue: when running the OpenJPA SchemaTool as part of Syncope webapp
initialization, an
exception is reported by HikariCP:

MySQLNonTransientConnectionException: Can't call rollback when
autocommit=true

No tables are created, and the OpenJPA initialization fails.

The reported stacktrace points to [2], from which I would say that
the exception is quite right. The strange thing is that when using other
connection pool libraries as Commons DBCP2, everything works fine.

Can someone explain why rollback is explicitly invoked after
setting
autocommit to true? (same applies to the commit statement few
lines
below).

Shouldn't it be better to make such behavior optional, anyway?

FYI, I have temporarily solved my issue by adding

relaxAutoCommit=true

to the JDBC URL, and all the integration tests run fine.

Please let me have your feedback, thanks.
Regards.

[1] https://issues.apache.org/jira/browse/SYNCOPE-1084
[2]
https://github.com/apache/openjpa/blob/2.4.x/openjpa-
jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java#L1267




--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to