Skip to content

Commit ad024b6

Browse files
committed
To prevent NPE use pool name for metrics if JDBC URL is not set.
1 parent 49d1946 commit ad024b6

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

apm-sniffer/apm-sdk-plugin/hikaricp-3.x-4.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hikaricp/PoolingSealInterceptor.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,13 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
4949
public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Object ret) throws Throwable {
5050

5151
HikariDataSource hikariDataSource = (HikariDataSource) objInst;
52-
ConnectionInfo connectionInfo = URLParser.parser(hikariDataSource.getJdbcUrl());
53-
String tagValue = connectionInfo.getDatabaseName() + "_" + connectionInfo.getDatabasePeer();
52+
String tagValue;
53+
if (hikariDataSource.getJdbcUrl() != null) {
54+
ConnectionInfo connectionInfo = URLParser.parser(hikariDataSource.getJdbcUrl());
55+
tagValue = connectionInfo.getDatabaseName() + "_" + connectionInfo.getDatabasePeer();
56+
} else {
57+
tagValue = hikariDataSource.getPoolName();
58+
}
5459
final Map<String, Function<HikariPoolMXBean, Supplier<Double>>> poolMetricMap = getPoolMetrics();
5560
final Map<String, Function<HikariConfigMXBean, Supplier<Double>>> metricConfigMap = getConfigMetrics();
5661
poolMetricMap.forEach((key, value) -> MeterFactory.gauge(METER_NAME, value.apply(hikariDataSource.getHikariPoolMXBean()))

0 commit comments

Comments
 (0)