Skip to content

Commit f479336

Browse files
committed
Use computeIfAbsent to record metrics
1 parent 7621e24 commit f479336

File tree

3 files changed

+28
-23
lines changed

3 files changed

+28
-23
lines changed

src/main/java/com/uid2/operator/service/EncryptedTokenEncoder.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.uid2.operator.service;
22

33
import com.uid2.operator.model.*;
4+
import com.uid2.operator.util.Tuple;
45
import com.uid2.operator.vertx.ClientInputValidationException;
56
import com.uid2.shared.Const.Data;
67
import com.uid2.shared.encryption.AesCbc;
@@ -11,16 +12,20 @@
1112
import io.vertx.core.buffer.Buffer;
1213
import io.micrometer.core.instrument.Counter;
1314
import io.micrometer.core.instrument.Metrics;
15+
import software.amazon.awssdk.services.kms.endpoints.internal.Value;
1416

1517
import java.time.Instant;
1618
import java.util.Base64;
19+
import java.util.HashMap;
20+
import java.util.Map;
1721

1822
public class EncryptedTokenEncoder implements ITokenEncoder {
1923
private final KeyManager keyManager;
2024

2125
public EncryptedTokenEncoder(KeyManager keyManager) {
2226
this.keyManager = keyManager;
2327
}
28+
private final Map<Integer, Counter> _refreshTokenVersionCounters = new HashMap<>();
2429

2530
public byte[] encode(AdvertisingToken t, Instant asOf) {
2631
final KeysetKey masterKey = this.keyManager.getMasterKey(asOf);
@@ -260,23 +265,24 @@ public AdvertisingToken decodeAdvertisingTokenV3orV4(Buffer b, byte[] bytes, Tok
260265
);
261266
}
262267

268+
private void recordRefreshTokenVersionCount(int siteId, TokenVersion tokenVersion) {
269+
_refreshTokenVersionCounters.computeIfAbsent(siteId, id -> Counter
270+
.builder(String.format("uid2_refresh_token_%s_served_count", tokenVersion.toString().toLowerCase()))
271+
.description(String.format("Counter for the amount of refresh token %s served", tokenVersion.toString().toLowerCase()))
272+
.tags("site_id", String.valueOf(siteId))
273+
.register(Metrics.globalRegistry)).increment();
274+
275+
}
276+
263277
public byte[] encode(RefreshToken t, Instant asOf) {
264278
final KeysetKey serviceKey = this.keyManager.getRefreshKey(asOf);
265279

266280
switch (t.version) {
267281
case V2:
268-
var v2Builder = Counter
269-
.builder("uid2_refresh_token_v2_served_count")
270-
.description("Counter for the amount of refresh token v2 served").tags(
271-
"timestamp", String.valueOf(asOf));
272-
v2Builder.register(Metrics.globalRegistry).increment();
282+
recordRefreshTokenVersionCount(t.publisherIdentity.siteId, TokenVersion.V2);
273283
return encodeV2(t, serviceKey);
274284
case V3:
275-
var v3Builder = Counter
276-
.builder("uid2_refresh_token_v3_served_count")
277-
.description("Counter for the amount of refresh token v3 served").tags(
278-
"timestamp", String.valueOf(asOf));
279-
v3Builder.register(Metrics.globalRegistry).increment();
285+
recordRefreshTokenVersionCount(t.publisherIdentity.siteId, TokenVersion.V3);
280286
return encodeV3(t, serviceKey);
281287
default:
282288
throw new ClientInputValidationException("RefreshToken version " + t.version + " not supported");

src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public class UIDOperatorVerticle extends AbstractVerticle {
114114
public final static int MASTER_KEYSET_ID_FOR_SDKS = 9999999; //this is because SDKs have an issue where they assume keyset ids are always positive; that will be fixed.
115115
public final static long OPT_OUT_CHECK_CUTOFF_DATE = Instant.parse("2023-09-01T00:00:00.00Z").getEpochSecond();
116116
private final Handler<Boolean> saltRetrievalResponseHandler;
117+
private final Map<String, Counter> _refreshTokenVersionCounters = new HashMap<>();
117118

118119
private final int maxBidstreamLifetimeSeconds;
119120
private final int allowClockSkewSeconds;
@@ -1791,6 +1792,15 @@ public TokenVersion getRefreshTokenVersion(String s) {
17911792
return null;
17921793
}
17931794

1795+
private void recordRefreshTokenVersionCount(String siteId, TokenVersion tokenVersion) {
1796+
_refreshTokenVersionCounters.computeIfAbsent(siteId, id -> Counter
1797+
.builder(String.format("uid2_refresh_token_%s_received_count", tokenVersion.toString().toLowerCase()))
1798+
.description(String.format("Counter for the amount of refresh token %s received", tokenVersion.toString().toLowerCase()))
1799+
.tags("site_id", siteId)
1800+
.register(Metrics.globalRegistry)).increment();
1801+
1802+
}
1803+
17941804
private RefreshResponse refreshIdentity(RoutingContext rc, String tokenStr) {
17951805
final RefreshToken refreshToken;
17961806
try {
@@ -1808,19 +1818,7 @@ private RefreshResponse refreshIdentity(RoutingContext rc, String tokenStr) {
18081818
rc.put(Const.RoutingContextData.SiteId, refreshToken.publisherIdentity.siteId);
18091819
}
18101820
TokenVersion tokenVersion = this.getRefreshTokenVersion(tokenStr);
1811-
if (tokenVersion == TokenVersion.V2) {
1812-
var v2Builder = Counter
1813-
.builder("uid2_refresh_token_v2_received_count")
1814-
.description("Counter for the amount of refresh token v2 received").tags(
1815-
"site_id", String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)));
1816-
v2Builder.register(Metrics.globalRegistry).increment();
1817-
} else if (tokenVersion == TokenVersion.V3) {
1818-
var v3Builder = Counter
1819-
.builder("uid2_refresh_token_v3_received_count")
1820-
.description("Counter for the amount of refresh token v3 received").tags(
1821-
"site_id", String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)));
1822-
v3Builder.register(Metrics.globalRegistry).increment();
1823-
}
1821+
recordRefreshTokenVersionCount(String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)), tokenVersion);
18241822

18251823
return this.idService.refreshIdentity(refreshToken);
18261824
}

src/test/java/com/uid2/operator/TokenEncodingTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public void testRefreshTokenEncoding(TokenVersion tokenVersion) {
9494

9595
assertEquals(1, Metrics.globalRegistry
9696
.get("uid2_refresh_token_v3_served_count")
97+
.tag("site_id", "111")
9798
.counter().count());
9899
}
99100

0 commit comments

Comments
 (0)