Possible issue with HikariCP

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Possible issue with HikariCP

ilgrosso
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 | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Possible issue with HikariCP

Romain Manni-Bucau
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ò <[hidden email]>:

> 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 | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Possible issue with HikariCP

ilgrosso
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ò <[hidden email]>:
>
>> 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 | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Possible issue with HikariCP

Romain Manni-Bucau
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ò <[hidden email]>:

> 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ò <[hidden email]>:
>>
>> 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/
>
>
Loading...