2727 */
2828public final class DbConnectionPoolMetrics {
2929
30- static final AttributeKey <String > POOL_NAME = stringKey ("pool.name" );
31- static final AttributeKey <String > CONNECTION_STATE = stringKey ("state" );
30+ static final AttributeKey <String > POOL_NAME =
31+ stringKey (emitStableDatabaseSemconv () ? "db.client.connection.pool.name" : "pool.name" );
32+ static final AttributeKey <String > CONNECTION_STATE =
33+ stringKey (emitStableDatabaseSemconv () ? "db.client.connection.state" : "state" );
3234
3335 static final String STATE_IDLE = "idle" ;
3436 static final String STATE_USED = "used" ;
@@ -61,42 +63,58 @@ public ObservableLongMeasurement connections() {
6163 emitStableDatabaseSemconv () ? "db.client.connection.count" : "db.client.connections.usage" ;
6264 return meter
6365 .upDownCounterBuilder (metricName )
64- .setUnit ("{connections}" )
66+ .setUnit (emitStableDatabaseSemconv () ? "{connection}" : "{connections}" )
6567 .setDescription (
6668 "The number of connections that are currently in state described by the state attribute." )
6769 .buildObserver ();
6870 }
6971
7072 public ObservableLongMeasurement minIdleConnections () {
73+ String metricName =
74+ emitStableDatabaseSemconv ()
75+ ? "db.client.connection.idle.min"
76+ : "db.client.connections.idle.min" ;
7177 return meter
72- .upDownCounterBuilder ("db.client.connections.idle.min" )
73- .setUnit ("{connections}" )
78+ .upDownCounterBuilder (metricName )
79+ .setUnit (emitStableDatabaseSemconv () ? "{connection}" : "{connections}" )
7480 .setDescription ("The minimum number of idle open connections allowed." )
7581 .buildObserver ();
7682 }
7783
7884 public ObservableLongMeasurement maxIdleConnections () {
85+ String metricName =
86+ emitStableDatabaseSemconv ()
87+ ? "db.client.connection.idle.max"
88+ : "db.client.connections.idle.max" ;
7989 return meter
80- .upDownCounterBuilder ("db.client.connections.idle.max" )
81- .setUnit ("{connections}" )
90+ .upDownCounterBuilder (metricName )
91+ .setUnit (emitStableDatabaseSemconv () ? "{connection}" : "{connections}" )
8292 .setDescription ("The maximum number of idle open connections allowed." )
8393 .buildObserver ();
8494 }
8595
8696 public ObservableLongMeasurement maxConnections () {
97+ String metricName =
98+ emitStableDatabaseSemconv () ? "db.client.connection.max" : "db.client.connections.max" ;
8799 return meter
88- .upDownCounterBuilder ("db.client.connections.max" )
89- .setUnit ("{connections}" )
100+ .upDownCounterBuilder (metricName )
101+ .setUnit (emitStableDatabaseSemconv () ? "{connection}" : "{connections}" )
90102 .setDescription ("The maximum number of open connections allowed." )
91103 .buildObserver ();
92104 }
93105
94106 public ObservableLongMeasurement pendingRequestsForConnection () {
107+ String metricName =
108+ emitStableDatabaseSemconv ()
109+ ? "db.client.connection.pending_requests"
110+ : "db.client.connections.pending_requests" ;
95111 return meter
96- .upDownCounterBuilder ("db.client.connections.pending_requests" )
97- .setUnit ("{requests}" )
112+ .upDownCounterBuilder (metricName )
113+ .setUnit (emitStableDatabaseSemconv () ? "{request}" : "{requests}" )
98114 .setDescription (
99- "The number of pending requests for an open connection, cumulative for the entire pool." )
115+ emitStableDatabaseSemconv ()
116+ ? "The number of current pending requests for an open connection."
117+ : "The number of pending requests for an open connection, cumulative for the entire pool." )
100118 .buildObserver ();
101119 }
102120
@@ -107,39 +125,51 @@ public BatchCallback batchCallback(
107125 return meter .batchCallback (callback , observableMeasurement , additionalMeasurements );
108126 }
109127
110- // TODO: should be a BoundLongCounter
111128 public LongCounter connectionTimeouts () {
129+ String metricName =
130+ emitStableDatabaseSemconv ()
131+ ? "db.client.connection.timeouts"
132+ : "db.client.connections.timeouts" ;
112133 return meter
113- .counterBuilder ("db.client.connections.timeouts" )
114- .setUnit ("{timeouts}" )
134+ .counterBuilder (metricName )
135+ .setUnit (emitStableDatabaseSemconv () ? "{timeout}" : "{timeouts}" )
115136 .setDescription (
116137 "The number of connection timeouts that have occurred trying to obtain a connection from the pool." )
117138 .build ();
118139 }
119140
120- // TODO: should be a BoundDoubleHistogram
121141 public DoubleHistogram connectionCreateTime () {
142+ String metricName =
143+ emitStableDatabaseSemconv ()
144+ ? "db.client.connection.create_time"
145+ : "db.client.connections.create_time" ;
122146 return meter
123- .histogramBuilder ("db.client.connections.create_time" )
124- .setUnit ("ms" )
147+ .histogramBuilder (metricName )
148+ .setUnit (emitStableDatabaseSemconv () ? "s" : "ms" )
125149 .setDescription ("The time it took to create a new connection." )
126150 .build ();
127151 }
128152
129- // TODO: should be a BoundDoubleHistogram
130153 public DoubleHistogram connectionWaitTime () {
154+ String metricName =
155+ emitStableDatabaseSemconv ()
156+ ? "db.client.connection.wait_time"
157+ : "db.client.connections.wait_time" ;
131158 return meter
132- .histogramBuilder ("db.client.connections.wait_time" )
133- .setUnit ("ms" )
159+ .histogramBuilder (metricName )
160+ .setUnit (emitStableDatabaseSemconv () ? "s" : "ms" )
134161 .setDescription ("The time it took to obtain an open connection from the pool." )
135162 .build ();
136163 }
137164
138- // TODO: should be a BoundDoubleHistogram
139165 public DoubleHistogram connectionUseTime () {
166+ String metricName =
167+ emitStableDatabaseSemconv ()
168+ ? "db.client.connection.use_time"
169+ : "db.client.connections.use_time" ;
140170 return meter
141- .histogramBuilder ("db.client.connections.use_time" )
142- .setUnit ("ms" )
171+ .histogramBuilder (metricName )
172+ .setUnit (emitStableDatabaseSemconv () ? "s" : "ms" )
143173 .setDescription ("The time between borrowing a connection and returning it to the pool." )
144174 .build ();
145175 }
0 commit comments