diff options
author | Jacek <jacek.poreda@sonarsource.com> | 2022-02-10 12:09:48 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2022-08-29 20:02:52 +0000 |
commit | 8961d0c0b80dd23b7ed01ea0f249282956374795 (patch) | |
tree | fb1ab3db4f1fdd2c27b6ba1398a06572822a1b25 /server/sonar-ce/src | |
parent | 4d1bd03543c55e564151d55e3a4763b82bc8e512 (diff) | |
download | sonarqube-8961d0c0b80dd23b7ed01ea0f249282956374795.tar.gz sonarqube-8961d0c0b80dd23b7ed01ea0f249282956374795.zip |
SONAR-17200 Move to HikariCP from Apache DBCP
Diffstat (limited to 'server/sonar-ce/src')
3 files changed, 19 insertions, 86 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBean.java b/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBean.java index fa8d6f7ad3e..a2e69a63094 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBean.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBean.java @@ -21,23 +21,18 @@ package org.sonar.ce.monitoring; public interface CeDatabaseMBean { - String OBJECT_NAME = "SonarQube:name=ComputeEngineDatabaseConnection"; - int getPoolActiveConnections(); - int getPoolMaxActiveConnections(); + int getPoolMaxConnections(); - int getPoolIdleConnections(); + int getPoolTotalConnections(); - int getPoolMaxIdleConnections(); + int getPoolIdleConnections(); int getPoolMinIdleConnections(); - int getPoolInitialSize(); + long getPoolMaxLifeTimeMillis(); long getPoolMaxWaitMillis(); - boolean getPoolRemoveAbandoned(); - - int getPoolRemoveAbandonedTimeoutSeconds(); } diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBeanImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBeanImpl.java index c392abd1e05..2adb3b36c11 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBeanImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/monitoring/CeDatabaseMBeanImpl.java @@ -19,95 +19,34 @@ */ package org.sonar.ce.monitoring; -import org.apache.commons.dbcp2.BasicDataSource; -import org.sonar.api.Startable; +import org.sonar.db.DatabaseMBean; import org.sonar.db.DbClient; -import org.sonar.process.Jmx; -import org.sonar.process.systeminfo.SystemInfoSection; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; -public class CeDatabaseMBeanImpl implements CeDatabaseMBean, Startable, SystemInfoSection { - private final DbClient dbClient; +public class CeDatabaseMBeanImpl extends DatabaseMBean implements CeDatabaseMBean { - public CeDatabaseMBeanImpl(DbClient dbClient) { - this.dbClient = dbClient; - } - - @Override - public void start() { - Jmx.register(OBJECT_NAME, this); - } - - /** - * Unregister, if needed - */ - @Override - public void stop() { - Jmx.unregister(OBJECT_NAME); - } - - @Override - public int getPoolActiveConnections() { - return commonsDbcp().getNumActive(); - } - - @Override - public int getPoolMaxActiveConnections() { - return commonsDbcp().getMaxTotal(); - } - - @Override - public int getPoolIdleConnections() { - return commonsDbcp().getNumIdle(); - } + private static final String OBJECT_NAME = "ComputeEngineDatabaseConnection"; - @Override - public int getPoolMaxIdleConnections() { - return commonsDbcp().getMaxIdle(); - } - - @Override - public int getPoolMinIdleConnections() { - return commonsDbcp().getMinIdle(); - } - - @Override - public int getPoolInitialSize() { - return commonsDbcp().getInitialSize(); - } - - @Override - public long getPoolMaxWaitMillis() { - return commonsDbcp().getMaxWaitMillis(); - } - - @Override - public boolean getPoolRemoveAbandoned() { - return commonsDbcp().getRemoveAbandonedOnBorrow(); + public CeDatabaseMBeanImpl(DbClient dbClient) { + super(dbClient); } @Override - public int getPoolRemoveAbandonedTimeoutSeconds() { - return commonsDbcp().getRemoveAbandonedTimeout(); - } - - private BasicDataSource commonsDbcp() { - return (BasicDataSource) dbClient.getDatabase().getDataSource(); + protected String name() { + return OBJECT_NAME; } @Override public ProtobufSystemInfo.Section toProtobuf() { ProtobufSystemInfo.Section.Builder builder = ProtobufSystemInfo.Section.newBuilder(); builder.setName("Compute Engine Database Connection"); - builder.addAttributesBuilder().setKey("Pool Initial Size").setLongValue(getPoolInitialSize()).build(); + builder.addAttributesBuilder().setKey("Pool Total Connections").setLongValue(getPoolTotalConnections()).build(); builder.addAttributesBuilder().setKey("Pool Active Connections").setLongValue(getPoolActiveConnections()).build(); builder.addAttributesBuilder().setKey("Pool Idle Connections").setLongValue(getPoolIdleConnections()).build(); - builder.addAttributesBuilder().setKey("Pool Max Active Connections").setLongValue(getPoolMaxActiveConnections()).build(); - builder.addAttributesBuilder().setKey("Pool Max Idle Connections").setLongValue(getPoolMaxIdleConnections()).build(); + builder.addAttributesBuilder().setKey("Pool Max Connections").setLongValue(getPoolMaxConnections()).build(); builder.addAttributesBuilder().setKey("Pool Min Idle Connections").setLongValue(getPoolMinIdleConnections()).build(); builder.addAttributesBuilder().setKey("Pool Max Wait (ms)").setLongValue(getPoolMaxWaitMillis()).build(); - builder.addAttributesBuilder().setKey("Pool Remove Abandoned").setBooleanValue(getPoolRemoveAbandoned()).build(); - builder.addAttributesBuilder().setKey("Pool Remove Abandoned Timeout (sec)").setLongValue(getPoolRemoveAbandonedTimeoutSeconds()).build(); + builder.addAttributesBuilder().setKey("Pool Max Lifetime (ms)").setLongValue(getPoolMaxLifeTimeMillis()).build(); return builder.build(); } } diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/monitoring/CeDatabaseMBeanImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/monitoring/CeDatabaseMBeanImplTest.java index 35894dd9fdb..cd8e0de1eaa 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/monitoring/CeDatabaseMBeanImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/monitoring/CeDatabaseMBeanImplTest.java @@ -33,7 +33,6 @@ import org.sonar.process.Jmx; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; import static org.assertj.core.api.Assertions.assertThat; -import static org.sonar.ce.monitoring.CeDatabaseMBean.OBJECT_NAME; public class CeDatabaseMBeanImplTest { @@ -45,7 +44,7 @@ public class CeDatabaseMBeanImplTest { @BeforeClass public static void beforeClass() { // if any other class starts a container where CeDatabaseMBeanImpl is added, it will have been registered - Jmx.unregister(OBJECT_NAME); + Jmx.unregister("SonarQube:name=ComputeEngineDatabaseConnection"); } @Test @@ -63,15 +62,15 @@ public class CeDatabaseMBeanImplTest { public void export_system_info() { ProtobufSystemInfo.Section section = underTest.toProtobuf(); assertThat(section.getName()).isEqualTo("Compute Engine Database Connection"); - assertThat(section.getAttributesCount()).isEqualTo(9); - assertThat(section.getAttributes(0).getKey()).isEqualTo("Pool Initial Size"); - assertThat(section.getAttributes(0).getLongValue()).isGreaterThanOrEqualTo(0); + assertThat(section.getAttributesCount()).isEqualTo(7); + assertThat(section.getAttributes(0).getKey()).isEqualTo("Pool Total Connections"); + assertThat(section.getAttributes(0).getLongValue()).isPositive(); } @CheckForNull private ObjectInstance getMBean() throws Exception { try { - return ManagementFactory.getPlatformMBeanServer().getObjectInstance(new ObjectName(OBJECT_NAME)); + return ManagementFactory.getPlatformMBeanServer().getObjectInstance(new ObjectName("SonarQube:name=ComputeEngineDatabaseConnection")); } catch (InstanceNotFoundException e) { return null; } |