[
https://issues.apache.org/jira/browse/SENTRY-1965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16181744#comment-16181744
]
Alexander Kolbasov commented on SENTRY-1965:
--------------------------------------------
[~_mcarter_] [~arjunmishra13] [~spena] [~btowles] FYI
> sentry server database database Destroy connection exception (Galera cluster)
> -----------------------------------------------------------------------------
>
> Key: SENTRY-1965
> URL: https://issues.apache.org/jira/browse/SENTRY-1965
> Project: Sentry
> Issue Type: Bug
> Components: Sentry
> Affects Versions: 1.5.1
> Environment: Sentry 1.5.1
> CDH 5.9.1
> Mysql 5.6.35
> Galera 25.18
> Reporter: Steven Hancz
> Labels: galera
>
> We have implemented an HA solution for the Sentry server database.
> Basically instead of using a single MySQL server we have a Galera cluster
> that is accessed via a DNS load balanced VIP. So that if one MySQL server
> stops working the VIP will detect and send the DB request to the surviving
> node. A similar set up is working for the HIVE metastore.
> However we noticed that Sentry just like spark uses the BoneCP connection
> pool to connect to the database. There are some hard codded configuration
> options in the bonecp-default-config.xml that are causing issues with Sentry.
> idleConnectionTestPeriodInMinutes default 240 minutes
> idleMaxAgeInMinutes default 60 minutes
> Based on this BonceCP will test each idle connection every 240 minutes
> but an idle connection is closed after 60 minutes (second parameter) so the
> connection testing will never take place as the connection will be closed
> after 60 minutes. The test takes place every 240 minutes.
> However in an HA configuration with a VIP you can set the connection time out
> and how often to test for target availability.
> We had the exact same problem for hive there the work around was to include a
> second configuration file for BoneCP called bonecp-config.xml. This was added
> to the hive server jar. The second config file (bonecp-config.xml) contains
> idleConnectionTestPeriodInMinutes 1
> idleMaxAgeInMinutes 5
> So that every connection is tested every minute and an idle connection is
> closed after 5 minutes. But since we test it every minute they will be kept
> alive.
> So the question is how to enable a similar setting for Sentry ?
> With default boneCP configuration and Galera cluster in the back end Sentry
> is returning the following error:
> Sep 26, 7:30:39.900 AM ERROR
> com.jolbox.bonecp.ConnectionTesterThread
> Destroy connection exception
> com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> Communications link failure during rollback(). Transaction resolution unknown.
> at sun.reflect.GeneratedConstructorAccessor41.newInstance(Unknown
> Source)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
> at com.mysql.jdbc.Util.getInstance(Util.java:387)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
> at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4634)
> at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4263)
> at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1519)
> at
> com.jolbox.bonecp.ConnectionHandle.internalClose(ConnectionHandle.java:396)
> at
> com.jolbox.bonecp.ConnectionTesterThread.closeConnection(ConnectionTesterThread.java:155)
> at
> com.jolbox.bonecp.ConnectionTesterThread.run(ConnectionTesterThread.java:95)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> From our research it appears that sentry server is using BoneCP class but in
> more than one location. Changing the parameters in BoneCP for Sentry alone is
> does not appear to be sufficient. Trace file shows that parameters are not
> changed and time outs are default boncecp parameter. Where else do we have to
> change boneCP config?
> Regards,
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)