Skip to content

Commit ca213bb

Browse files
chore: add open census metric label is_multiplexed for multiplexed se… (#3033)
* chore: add open census metric label is_multiplexed for multiplexed session. * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent ebb2182 commit ca213bb

File tree

3 files changed

+127
-19
lines changed

3 files changed

+127
-19
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/MetricRegistryConstants.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ class MetricRegistryConstants {
3030
LabelKey.create("instance_id", "Name of the instance");
3131
private static final LabelKey LIBRARY_VERSION =
3232
LabelKey.create("library_version", "Library version");
33+
static final LabelKey IS_MULTIPLEXED_KEY =
34+
LabelKey.create("is_multiplexed", "Multiplexed Session");
35+
3336
private static final LabelKey SESSION_TYPE = LabelKey.create("Type", "Type of the Sessions");
3437

3538
/** The label value is used to represent missing value. */
@@ -62,6 +65,9 @@ class MetricRegistryConstants {
6265
static final ImmutableList<LabelValue> SPANNER_DEFAULT_LABEL_VALUES =
6366
ImmutableList.of(UNSET_LABEL, UNSET_LABEL, UNSET_LABEL, UNSET_LABEL);
6467

68+
static final ImmutableList<LabelKey> SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS =
69+
ImmutableList.of(CLIENT_ID, DATABASE, INSTANCE_ID, LIBRARY_VERSION, IS_MULTIPLEXED_KEY);
70+
6571
/** Unit to represent counts. */
6672
static final String COUNT = "1";
6773

@@ -80,7 +86,6 @@ class MetricRegistryConstants {
8086
static final String NUM_SESSIONS_AVAILABLE = "spanner/num_available_sessions";
8187
static final String SESSIONS_TYPE = "session_type";
8288
static final String IS_MULTIPLEXED = "is_multiplexed";
83-
8489
static final String MAX_IN_USE_SESSIONS_DESCRIPTION =
8590
"The maximum number of sessions in use during the last 10 minute interval.";
8691
static final String MAX_ALLOWED_SESSIONS_DESCRIPTION =

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import static com.google.cloud.spanner.MetricRegistryConstants.SESSIONS_TYPE;
4141
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_DEFAULT_LABEL_VALUES;
4242
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS;
43+
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS;
4344
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS_WITH_TYPE;
4445
import static com.google.cloud.spanner.SpannerExceptionFactory.newSpannerException;
4546
import static com.google.common.base.Preconditions.checkState;
@@ -3687,7 +3688,7 @@ private void initOpenCensusMetricsCollection(
36873688
MetricOptions.builder()
36883689
.setDescription(NUM_ACQUIRED_SESSIONS_DESCRIPTION)
36893690
.setUnit(COUNT)
3690-
.setLabelKeys(SPANNER_LABEL_KEYS)
3691+
.setLabelKeys(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS)
36913692
.build());
36923693

36933694
DerivedLongCumulative numReleasedSessionsMetric =
@@ -3696,7 +3697,7 @@ private void initOpenCensusMetricsCollection(
36963697
MetricOptions.builder()
36973698
.setDescription(NUM_RELEASED_SESSIONS_DESCRIPTION)
36983699
.setUnit(COUNT)
3699-
.setLabelKeys(SPANNER_LABEL_KEYS)
3700+
.setLabelKeys(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS)
37003701
.build());
37013702

37023703
DerivedLongGauge numSessionsInPoolMetric =
@@ -3725,13 +3726,28 @@ private void initOpenCensusMetricsCollection(
37253726
sessionsTimeouts.removeTimeSeries(labelValues);
37263727
sessionsTimeouts.createTimeSeries(labelValues, this, SessionPool::getNumWaiterTimeouts);
37273728

3728-
numAcquiredSessionsMetric.removeTimeSeries(labelValues);
3729+
List<LabelValue> labelValuesWithRegularSessions = new ArrayList<>(labelValues);
3730+
List<LabelValue> labelValuesWithMultiplexedSessions = new ArrayList<>(labelValues);
3731+
labelValuesWithMultiplexedSessions.add(LabelValue.create("true"));
3732+
labelValuesWithRegularSessions.add(LabelValue.create("false"));
3733+
3734+
numAcquiredSessionsMetric.removeTimeSeries(labelValuesWithRegularSessions);
3735+
numAcquiredSessionsMetric.createTimeSeries(
3736+
labelValuesWithRegularSessions, this, sessionPool -> sessionPool.numSessionsAcquired);
3737+
numAcquiredSessionsMetric.removeTimeSeries(labelValuesWithMultiplexedSessions);
37293738
numAcquiredSessionsMetric.createTimeSeries(
3730-
labelValues, this, sessionPool -> sessionPool.numSessionsAcquired);
3739+
labelValuesWithMultiplexedSessions,
3740+
this,
3741+
sessionPool -> sessionPool.numMultiplexedSessionsAcquired);
37313742

3732-
numReleasedSessionsMetric.removeTimeSeries(labelValues);
3743+
numReleasedSessionsMetric.removeTimeSeries(labelValuesWithRegularSessions);
3744+
numReleasedSessionsMetric.createTimeSeries(
3745+
labelValuesWithRegularSessions, this, sessionPool -> sessionPool.numSessionsReleased);
3746+
numReleasedSessionsMetric.removeTimeSeries(labelValuesWithMultiplexedSessions);
37333747
numReleasedSessionsMetric.createTimeSeries(
3734-
labelValues, this, sessionPool -> sessionPool.numSessionsReleased);
3748+
labelValuesWithMultiplexedSessions,
3749+
this,
3750+
sessionPool -> sessionPool.numMultiplexedSessionsReleased);
37353751

37363752
List<LabelValue> labelValuesWithBeingPreparedType = new ArrayList<>(labelValues);
37373753
labelValuesWithBeingPreparedType.add(NUM_SESSIONS_BEING_PREPARED);

google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolTest.java

Lines changed: 99 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.cloud.spanner;
1818

1919
import static com.google.cloud.spanner.MetricRegistryConstants.GET_SESSION_TIMEOUTS;
20+
import static com.google.cloud.spanner.MetricRegistryConstants.IS_MULTIPLEXED_KEY;
2021
import static com.google.cloud.spanner.MetricRegistryConstants.MAX_ALLOWED_SESSIONS;
2122
import static com.google.cloud.spanner.MetricRegistryConstants.MAX_IN_USE_SESSIONS;
2223
import static com.google.cloud.spanner.MetricRegistryConstants.METRIC_PREFIX;
@@ -31,6 +32,7 @@
3132
import static com.google.cloud.spanner.MetricRegistryConstants.NUM_WRITE_SESSIONS;
3233
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_DEFAULT_LABEL_VALUES;
3334
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS;
35+
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS;
3436
import static com.google.cloud.spanner.MetricRegistryConstants.SPANNER_LABEL_KEYS_WITH_TYPE;
3537
import static com.google.cloud.spanner.SpannerOptionsTest.runWithSystemProperty;
3638
import static com.google.common.truth.Truth.assertThat;
@@ -1769,19 +1771,70 @@ public void testOpenCensusSessionMetrics() throws Exception {
17691771
assertThat(getSessionsTimeouts.get(0).keys()).isEqualTo(SPANNER_LABEL_KEYS);
17701772
assertThat(getSessionsTimeouts.get(0).values()).isEqualTo(labelValues);
17711773

1774+
List<LabelValue> labelValuesWithRegularSessions = new ArrayList<>(labelValues);
1775+
labelValuesWithRegularSessions.add(LabelValue.create("false"));
1776+
List<LabelValue> labelValuesWithMultiplexedSessions = new ArrayList<>(labelValues);
1777+
labelValuesWithMultiplexedSessions.add(LabelValue.create("true"));
17721778
List<PointWithFunction> numAcquiredSessions =
17731779
record.getMetrics().get(METRIC_PREFIX + NUM_ACQUIRED_SESSIONS);
1774-
assertThat(numAcquiredSessions.size()).isEqualTo(1);
1775-
assertThat(numAcquiredSessions.get(0).value()).isEqualTo(2L);
1776-
assertThat(numAcquiredSessions.get(0).keys()).isEqualTo(SPANNER_LABEL_KEYS);
1777-
assertThat(numAcquiredSessions.get(0).values()).isEqualTo(labelValues);
1780+
assertThat(numAcquiredSessions.size()).isEqualTo(2);
1781+
PointWithFunction regularSessionMetric =
1782+
numAcquiredSessions.stream()
1783+
.filter(
1784+
x ->
1785+
x.keys().contains(IS_MULTIPLEXED_KEY)
1786+
&& x.values().contains(LabelValue.create("false")))
1787+
.findFirst()
1788+
.get();
1789+
PointWithFunction multiplexedSessionMetric =
1790+
numAcquiredSessions.stream()
1791+
.filter(
1792+
x ->
1793+
x.keys().contains(IS_MULTIPLEXED_KEY)
1794+
&& x.values().contains(LabelValue.create("true")))
1795+
.findFirst()
1796+
.get();
1797+
// verify metrics for regular sessions
1798+
assertThat(regularSessionMetric.value()).isEqualTo(2L);
1799+
assertThat(regularSessionMetric.keys()).isEqualTo(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS);
1800+
assertThat(regularSessionMetric.values()).isEqualTo(labelValuesWithRegularSessions);
1801+
1802+
// verify metrics for multiplexed sessions
1803+
assertThat(multiplexedSessionMetric.value()).isEqualTo(0L);
1804+
assertThat(multiplexedSessionMetric.keys())
1805+
.isEqualTo(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS);
1806+
assertThat(multiplexedSessionMetric.values()).isEqualTo(labelValuesWithMultiplexedSessions);
17781807

17791808
List<PointWithFunction> numReleasedSessions =
17801809
record.getMetrics().get(METRIC_PREFIX + NUM_RELEASED_SESSIONS);
1781-
assertThat(numReleasedSessions.size()).isEqualTo(1);
1782-
assertThat(numReleasedSessions.get(0).value()).isEqualTo(0);
1783-
assertThat(numReleasedSessions.get(0).keys()).isEqualTo(SPANNER_LABEL_KEYS);
1784-
assertThat(numReleasedSessions.get(0).values()).isEqualTo(labelValues);
1810+
assertThat(numReleasedSessions.size()).isEqualTo(2);
1811+
1812+
regularSessionMetric =
1813+
numReleasedSessions.stream()
1814+
.filter(
1815+
x ->
1816+
x.keys().contains(IS_MULTIPLEXED_KEY)
1817+
&& x.values().contains(LabelValue.create("false")))
1818+
.findFirst()
1819+
.get();
1820+
multiplexedSessionMetric =
1821+
numReleasedSessions.stream()
1822+
.filter(
1823+
x ->
1824+
x.keys().contains(IS_MULTIPLEXED_KEY)
1825+
&& x.values().contains(LabelValue.create("true")))
1826+
.findFirst()
1827+
.get();
1828+
// verify metrics for regular sessions
1829+
assertThat(regularSessionMetric.value()).isEqualTo(0L);
1830+
assertThat(regularSessionMetric.keys()).isEqualTo(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS);
1831+
assertThat(regularSessionMetric.values()).isEqualTo(labelValuesWithRegularSessions);
1832+
1833+
// verify metrics for multiplexed sessions
1834+
assertThat(multiplexedSessionMetric.value()).isEqualTo(0L);
1835+
assertThat(multiplexedSessionMetric.keys())
1836+
.isEqualTo(SPANNER_LABEL_KEYS_WITH_MULTIPLEXED_SESSIONS);
1837+
assertThat(multiplexedSessionMetric.values()).isEqualTo(labelValuesWithMultiplexedSessions);
17851838

17861839
List<PointWithFunction> maxAllowedSessions =
17871840
record.getMetrics().get(METRIC_PREFIX + MAX_ALLOWED_SESSIONS);
@@ -1847,12 +1900,46 @@ public void testOpenCensusSessionMetrics() throws Exception {
18471900

18481901
session1.close();
18491902
numAcquiredSessions = record.getMetrics().get(METRIC_PREFIX + NUM_ACQUIRED_SESSIONS);
1850-
assertThat(numAcquiredSessions.size()).isEqualTo(1);
1851-
assertThat(numAcquiredSessions.get(0).value()).isEqualTo(3L);
1903+
assertThat(numAcquiredSessions.size()).isEqualTo(2);
1904+
regularSessionMetric =
1905+
numAcquiredSessions.stream()
1906+
.filter(
1907+
x ->
1908+
x.keys().contains(IS_MULTIPLEXED_KEY)
1909+
&& x.values().contains(LabelValue.create("false")))
1910+
.findFirst()
1911+
.get();
1912+
multiplexedSessionMetric =
1913+
numAcquiredSessions.stream()
1914+
.filter(
1915+
x ->
1916+
x.keys().contains(IS_MULTIPLEXED_KEY)
1917+
&& x.values().contains(LabelValue.create("true")))
1918+
.findFirst()
1919+
.get();
1920+
assertThat(regularSessionMetric.value()).isEqualTo(3L);
1921+
assertThat(multiplexedSessionMetric.value()).isEqualTo(0L);
18521922

18531923
numReleasedSessions = record.getMetrics().get(METRIC_PREFIX + NUM_RELEASED_SESSIONS);
1854-
assertThat(numReleasedSessions.size()).isEqualTo(1);
1855-
assertThat(numReleasedSessions.get(0).value()).isEqualTo(3L);
1924+
assertThat(numReleasedSessions.size()).isEqualTo(2);
1925+
regularSessionMetric =
1926+
numReleasedSessions.stream()
1927+
.filter(
1928+
x ->
1929+
x.keys().contains(IS_MULTIPLEXED_KEY)
1930+
&& x.values().contains(LabelValue.create("false")))
1931+
.findFirst()
1932+
.get();
1933+
multiplexedSessionMetric =
1934+
numReleasedSessions.stream()
1935+
.filter(
1936+
x ->
1937+
x.keys().contains(IS_MULTIPLEXED_KEY)
1938+
&& x.values().contains(LabelValue.create("true")))
1939+
.findFirst()
1940+
.get();
1941+
assertThat(regularSessionMetric.value()).isEqualTo(3L);
1942+
assertThat(multiplexedSessionMetric.value()).isEqualTo(0L);
18561943

18571944
maxInUseSessions = record.getMetrics().get(METRIC_PREFIX + MAX_IN_USE_SESSIONS);
18581945
assertThat(maxInUseSessions.size()).isEqualTo(1);

0 commit comments

Comments
 (0)