You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2023/06/21 13:23:22 UTC

[ranger] branch master updated: RANGER-2895: Replace c3p0 connection pool with HikariCP

This is an automated email from the ASF dual-hosted git repository.

pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 846031985 RANGER-2895: Replace c3p0 connection pool with HikariCP
846031985 is described below

commit 846031985cae70f7a8c5e92faf186948a302260e
Author: Pradeep AgrawaL <pr...@apache.org>
AuthorDate: Wed Jun 7 18:39:25 2023 +0530

    RANGER-2895: Replace c3p0 connection pool with HikariCP
---
 pom.xml                                            |  4 +-
 security-admin/pom.xml                             |  6 +-
 .../scripts/ranger-admin-site-template.xml         | 10 +--
 security-admin/scripts/upgrade_admin.py            |  9 +-
 .../org/apache/ranger/db/RangerDaoManager.java     |  6 --
 .../org/apache/ranger/db/XXAccessAuditDao.java     |  2 +-
 .../src/main/resources/META-INF/persistence.xml    | 10 ---
 .../conf.dist/ranger-admin-default-site.xml        | 18 ++--
 .../main/webapp/META-INF/applicationContext.xml    | 98 +++-------------------
 9 files changed, 32 insertions(+), 131 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9a6667ad2..9fc946731 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,7 @@
         <atlas.jettison.version>1.3.7</atlas.jettison.version>
         <atlas.commons.logging.version>1.1.3</atlas.commons.logging.version>
         <bouncycastle.version>1.70</bouncycastle.version>
-        <c3p0.version>0.9.5.5</c3p0.version>
+        <HikariCP.version>4.0.3</HikariCP.version>
         <cglib.version>2.2.0-b23</cglib.version>
         <checkstyle.plugin.version>3.1.0</checkstyle.plugin.version>
         <checkstyle.version>8.29</checkstyle.version>
@@ -176,7 +176,7 @@
         <metrics.core.version>3.0.2</metrics.core.version>
         <mockito.version>3.0.0</mockito.version>
         <mockito.all.version>1.10.19</mockito.all.version>
-        <mysql-connector-java.version>5.1.31</mysql-connector-java.version>
+        <mysql-connector-java.version>5.1.49</mysql-connector-java.version>
         <netty-all.version>4.1.85.Final</netty-all.version>
         <noggit.version>0.8</noggit.version>
         <orc.core.version>1.6.7</orc.core.version>
diff --git a/security-admin/pom.xml b/security-admin/pom.xml
index 25aaa0e58..08d289590 100644
--- a/security-admin/pom.xml
+++ b/security-admin/pom.xml
@@ -46,9 +46,9 @@
             <version>${asm.all.version}</version>
         </dependency>
         <dependency>
-            <groupId>com.mchange</groupId>
-            <artifactId>c3p0</artifactId>
-            <version>${c3p0.version}</version>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+            <version>${HikariCP.version}</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.hk2.external</groupId>
diff --git a/security-admin/scripts/ranger-admin-site-template.xml b/security-admin/scripts/ranger-admin-site-template.xml
index 037260f50..dc4bb52de 100644
--- a/security-admin/scripts/ranger-admin-site-template.xml
+++ b/security-admin/scripts/ranger-admin-site-template.xml
@@ -117,25 +117,21 @@
 		<value></value>
 	</property>
 	<property>
-		<name>ranger.jpa.jdbc.initialpoolsize</name>
+		<name>ranger.jpa.jdbc.idletimeout</name>
 		<value></value>
 	</property>
 	<property>
-		<name>ranger.jpa.jdbc.maxidletime</name>
+		<name>ranger.jpa.jdbc.maxlifetime</name>
 		<value></value>
 	</property>
 	<property>
-		<name>ranger.jpa.jdbc.maxstatements</name>
+		<name>ranger.jpa.jdbc.connectiontimeout</name>
 		<value></value>
 	</property>
 	<property>
 		<name>ranger.jpa.jdbc.preferredtestquery</name>
 		<value></value>
 	</property>
-	<property>
-		<name>ranger.jpa.jdbc.idleconnectiontestperiod</name>
-		<value></value>
-	</property>
 	<property>
 		<name>ranger.jpa.jdbc.credential.alias</name>
 		<value></value>
diff --git a/security-admin/scripts/upgrade_admin.py b/security-admin/scripts/upgrade_admin.py
index 85f57b8ce..d340bc603 100755
--- a/security-admin/scripts/upgrade_admin.py
+++ b/security-admin/scripts/upgrade_admin.py
@@ -102,11 +102,10 @@ config2xmlMAP = {
 	'jdbc.password':'ranger.jpa.jdbc.password',
 	'jdbc.maxPoolSize':'ranger.jpa.jdbc.maxpoolsize',
 	'jdbc.minPoolSize':'ranger.jpa.jdbc.minpoolsize',
-	'jdbc.initialPoolSize':'ranger.jpa.jdbc.initialpoolsize',
-	'jdbc.maxIdleTime':'ranger.jpa.jdbc.maxidletime',
-	'jdbc.maxStatements':'ranger.jpa.jdbc.maxstatements',
-	'jdbc.preferredTestQuery':'ranger.jpa.jdbc.preferredtestquery',
-	'jdbc.idleConnectionTestPeriod':'ranger.jpa.jdbc.idleconnectiontestperiod',
+	'jdbc.idleTimeout':'ranger.jpa.jdbc.idletimeout',
+	'jdbc.maxLifetime':'ranger.jpa.jdbc.maxlifetime',
+	'jdbc.connectionTimeout':'ranger.jpa.jdbc.connectiontimeout',
+    'jdbc.preferredTestQuery':'ranger.jpa.jdbc.preferredTestQuery',
 	'xaDB.jdbc.credential.alias':'ranger.jpa.jdbc.credential.alias',
 	'xaDB.jdbc.credential.provider.path':'ranger.jpa.jdbc.credential.provider.path',
 	'xa.logs.base.dir':'ranger.logs.base.dir',
diff --git a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
index 44375e5ac..81f9a1681 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
@@ -38,9 +38,6 @@ public class RangerDaoManager extends RangerDaoManagerBase {
 	@PersistenceContext(unitName = "defaultPU")
 	private EntityManager em;
 
-	@PersistenceContext(unitName = "loggingPU")
-	private EntityManager loggingEM;
-
 	@Autowired
 	StringUtil stringUtil;
 
@@ -57,9 +54,6 @@ public class RangerDaoManager extends RangerDaoManagerBase {
 			logger.debug("RangerDaoManager.getEntityManager(" + persistenceContextUnit + ")");
 		}
 
-		if ("loggingPU".equalsIgnoreCase(persistenceContextUnit)) {
-			return loggingEM;
-		}
 		return getEntityManager();
 	}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessAuditDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessAuditDao.java
index d6de8423c..7d60c5f67 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXAccessAuditDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessAuditDao.java
@@ -34,7 +34,7 @@ import org.springframework.stereotype.Service;
 public class XXAccessAuditDao extends BaseDao<XXAccessAudit> {
 	private static final Logger logger = LoggerFactory.getLogger(XXAccessAuditDao.class);
     public XXAccessAuditDao( RangerDaoManagerBase daoManager ) {
-		super(daoManager, "loggingPU");
+		super(daoManager);
     }
     public Long getMaxIdOfXXAccessAudit(){
 		Long maxXXAccessAuditID=Long.valueOf(0L);
diff --git a/security-admin/src/main/resources/META-INF/persistence.xml b/security-admin/src/main/resources/META-INF/persistence.xml
index 20f08d22a..827a312fd 100644
--- a/security-admin/src/main/resources/META-INF/persistence.xml
+++ b/security-admin/src/main/resources/META-INF/persistence.xml
@@ -86,15 +86,5 @@
 			<property name="eclipselink.jdbc.batch-writing" value="jdbc"/>
 		</properties>
 	</persistence-unit>
-	<persistence-unit name="loggingPU">
-		<mapping-file>META-INF/jpa_named_queries.xml</mapping-file>
-        <class>org.apache.ranger.entity.XXAccessAudit</class>
-        <shared-cache-mode>NONE</shared-cache-mode>
-
-		<properties>
-			<property name="eclipselink.logging.level" value="WARNING"/>
-			<property name="eclipselink.jdbc.batch-writing" value="jdbc"/>
-		</properties>
-	</persistence-unit>
 
 </persistence>
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
index 68d8a0303..0217489f8 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -392,20 +392,14 @@
 	</property>
 
 	<property>
-		<name>ranger.jpa.jdbc.initialpoolsize</name>
-		<value>5</value>
+		<name>ranger.jpa.jdbc.idletimeout</name>
+		<value>300000</value>
 		<description></description>
 	</property>
 
 	<property>
-		<name>ranger.jpa.jdbc.maxidletime</name>
-		<value>300</value>
-		<description></description>
-	</property>
-
-	<property>
-		<name>ranger.jpa.jdbc.maxstatements</name>
-		<value>500</value>
+		<name>ranger.jpa.jdbc.maxlifetime</name>
+		<value>1800000</value>
 		<description></description>
 	</property>
 
@@ -416,8 +410,8 @@
 	</property>
 
 	<property>
-		<name>ranger.jpa.jdbc.idleconnectiontestperiod</name>
-		<value>60</value>
+		<name>ranger.jpa.jdbc.connectiontimeout</name>
+		<value>30000</value>
 		<description></description>
 	</property>
 
diff --git a/security-admin/src/main/webapp/META-INF/applicationContext.xml b/security-admin/src/main/webapp/META-INF/applicationContext.xml
index 0923d6007..ce4afc538 100644
--- a/security-admin/src/main/webapp/META-INF/applicationContext.xml
+++ b/security-admin/src/main/webapp/META-INF/applicationContext.xml
@@ -61,26 +61,6 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 		</property>
 	</bean>
 
-	<bean id="loggingEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
-		<property name="persistenceUnitName" value="loggingPU" />
-		<property name="dataSource" ref="loggingDataSource" />
-		<property name="jpaVendorAdapter">
-			<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
-				<property name="databasePlatform" value="${ranger.jpa.jdbc.dialect}" />
-				<property name="showSql" value="${ranger.jpa.showsql}" />
-				<property name="generateDdl" value="false" />
-			</bean>
-		</property>
-		<property name="jpaPropertyMap">
-		<props>
-			<prop key="eclipselink.weaving">false</prop>
-		</props>
-		 </property>
-		<property name="loadTimeWeaver">
-		<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
-		</property>
-	</bean>
-
 	<bean id="xmlPropertyConfigurer" class="org.apache.ranger.common.XMLPropertiesUtil" />
 
 	<bean id="propertyConfigurer" class="org.apache.ranger.common.PropertiesUtil">
@@ -123,89 +103,37 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 		<property name="entityManagerFactory" ref="defaultEntityManagerFactory" />
 	</bean>
 
-	<bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager">
-		<property name="entityManagerFactory" ref="loggingEntityManagerFactory" />
-	</bean>
-
-	<!-- Datasource and Connection Pool Configuration http://www.mchange.com/projects/c3p0/index.jsp#configuration_properties -->
-	<bean id="defaultDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
-		<property name="driverClass">
+	<!-- Datasource and Connection Pool Configuration https://github.com/brettwooldridge/HikariCP -->
+	<bean id="defaultDataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
+		<property name="driverClassName">
 			<value>${ranger.jpa.jdbc.driver}</value>
 		</property>
 		<property name="jdbcUrl">
 			<value>${ranger.jpa.jdbc.url}</value>
 		</property>
-		<property name="user">
+		<property name="username">
 			<value>${ranger.jpa.jdbc.user}</value>
 		</property>
 		<property name="password">
 			<value>${ranger.jpa.jdbc.password}</value>
 		</property>
-		<property name="maxPoolSize">
-			<!-- <value>20</value> -->
+		<property name="maximumPoolSize">
 			<value>${ranger.jpa.jdbc.maxpoolsize}</value>
 		</property>
-		<property name="minPoolSize">
+		<property name="minimumIdle">
 			<value>${ranger.jpa.jdbc.minpoolsize}</value>
 		</property>
-		<property name="initialPoolSize">
-			<value>${ranger.jpa.jdbc.initialpoolsize}</value>
+		<property name="idleTimeout">
+			<value>${ranger.jpa.jdbc.idletimeout}</value>
 		</property>
-		<!-- Seconds a Connection can remain pooled but unused before being discarded.
-		Zero means idle connections never expire. -->
-		<property name="maxIdleTime">
-			<value>${ranger.jpa.jdbc.maxidletime}</value>
-		</property>
-		<property name="maxStatements">
-			<value>${ranger.jpa.jdbc.maxstatements}</value>
-		</property>
-		<property name="preferredTestQuery">
+		<property name="connectionTestQuery">
 			<value>${ranger.jpa.jdbc.preferredtestquery}</value>
 		</property>
-		<property name="idleConnectionTestPeriod">
-			<value>${ranger.jpa.jdbc.idleconnectiontestperiod}</value>
-		</property>
-		<property name="statementCacheNumDeferredCloseThreads">
-			<value>1</value>
-		</property>
-	</bean>
-
-	<bean id="loggingDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
-		<property name="driverClass">
-			<value>${ranger.jpa.jdbc.driver}</value>
-		</property>
-		<property name="jdbcUrl">
-			<value>${ranger.jpa.audit.jdbc.url}</value>
-		</property>
-		<property name="user">
-			<value>${ranger.jpa.jdbc.user}</value>
-		</property>
-		<property name="password">
-			<value>${ranger.jpa.jdbc.password}</value>
-		</property>
-		<property name="maxPoolSize">
-			<!-- <value>20</value> -->
-			<value>${ranger.jpa.jdbc.maxpoolsize}</value>
-		</property>
-		<property name="minPoolSize">
-			<value>${ranger.jpa.jdbc.minpoolsize}</value>
-		</property>
-		<property name="initialPoolSize">
-			<value>${ranger.jpa.jdbc.initialpoolsize}</value>
-		</property>
-		<!-- Seconds a Connection can remain pooled but unused before being discarded.
-		Zero means idle connections never expire. -->
-		<property name="maxIdleTime">
-			<value>${ranger.jpa.jdbc.maxidletime}</value>
-		</property>
-		<property name="maxStatements">
-			<value>${ranger.jpa.jdbc.maxstatements}</value>
-		</property>
-		<property name="preferredTestQuery">
-			<value>${ranger.jpa.jdbc.preferredtestquery}</value>
+		<property name="maxLifetime">
+			<value>${ranger.jpa.jdbc.maxlifetime}</value>
 		</property>
-		<property name="idleConnectionTestPeriod">
-			<value>${ranger.jpa.jdbc.idleconnectiontestperiod}</value>
+		<property name="connectionTimeout">
+			<value>${ranger.jpa.jdbc.connectiontimeout}</value>
 		</property>
 	</bean>