You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Francesco Chicchiriccò <il...@apache.org> on 2017/06/13 10:32:43 UTC

Possible issue with HikariCP

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/


Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
@Maxim: are you blocked? There are workarounds so if really blocking yes
otherwise not sure from my side

Le ven. 29 juin 2018 07:41, Maxim Solodovnik <so...@gmail.com> a
écrit :

> Sounds like this issue worth new release, isn't it?
> On Fri, Jun 29, 2018 at 12:38 PM Francesco Chicchiriccò
> <il...@apache.org> wrote:
> >
> > 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
> > >>> <rm...@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ò
> > >>>> <il...@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ò <
> > >>>>> ilgrosso@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ò <
> > >>>>> ilgrosso@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ò <
> > >>>> ilgrosso@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ò <
> > >>>>> ilgrosso@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/
> >
>
>
> --
> WBR
> Maxim aka solomax
>

Re: Possible issue with HikariCP

Posted by Maxim Solodovnik <so...@gmail.com>.
Sounds like this issue worth new release, isn't it?
On Fri, Jun 29, 2018 at 12:38 PM Francesco Chicchiriccò
<il...@apache.org> wrote:
>
> 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
> >>> <rm...@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ò
> >>>> <il...@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ò <
> >>>>> ilgrosso@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ò <
> >>>>> ilgrosso@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ò <
> >>>> ilgrosso@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ò <
> >>>>> ilgrosso@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/
>


-- 
WBR
Maxim aka solomax

Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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 
>>> <rm...@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ò 
>>>> <il...@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ò <
>>>>> ilgrosso@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ò <
>>>>> ilgrosso@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ò <
>>>> ilgrosso@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ò <
>>>>> ilgrosso@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/


Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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 
>> <rm...@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ò 
>>> <il...@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ò <
>>>> ilgrosso@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ò <
>>>> ilgrosso@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ò <
>>> ilgrosso@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ò <
>>>> ilgrosso@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/


Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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.

Regards.

> On Thu, Jun 28, 2018 at 2:25 PM, Romain Manni-Bucau <rm...@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ò <il...@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ò <
>>> ilgrosso@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ò <
>>> ilgrosso@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ò <
>> ilgrosso@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ò <
>>> ilgrosso@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/


Re: Possible issue with HikariCP

Posted by Jonathan Gallimore <jo...@gmail.com>.
Is there an easy way to try it out? I'd be interested in giving it a go.

Jon

On Thu, Jun 28, 2018 at 2:25 PM, Romain Manni-Bucau <rm...@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ò <il...@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ò <
> > ilgrosso@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ò <
> > ilgrosso@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ò <
> ilgrosso@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ò <
> > ilgrosso@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/
> >
> >
>

Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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ò <il...@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ò <
> ilgrosso@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ò <
> ilgrosso@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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <ilgrosso@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ò <
> ilgrosso@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/
>
>

Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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ò <il...@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ò <il...@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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <il...@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ò <il...@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/


Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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

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 mer. 27 juin 2018 à 17:40, Francesco Chicchiriccò <il...@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ò <
> ilgrosso@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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <ilgrosso@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ò <
> ilgrosso@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/
>
>

Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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ò <il...@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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <il...@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ò <ilgrosso@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/


Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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)

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 mer. 27 juin 2018 à 17:28, Francesco Chicchiriccò <il...@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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <il...@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ò <ilgrosso@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/
>
>

Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@apache.org>.
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/53b0e83f37aa9a8f9c06a67fb7a948487efe1a6941d4b9fae1404858@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ò <il...@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ò <il...@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/


Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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 ;))


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2017-06-13 12:44 GMT+02:00 Francesco Chicchiriccò <il...@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ò <il...@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/
>
>

Re: Possible issue with HikariCP

Posted by Francesco Chicchiriccò <il...@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ò <il...@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/


Re: Possible issue with HikariCP

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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?


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2017-06-13 12:32 GMT+02:00 Francesco Chicchiriccò <il...@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/
>
>