Remove legacy push latency measurement pathways

This commit is contained in:
Jon Chambers 2021-11-10 10:33:29 -05:00 committed by Jon Chambers
parent de6e9d31c9
commit cbdec0cb22
2 changed files with 3 additions and 48 deletions

View File

@ -152,7 +152,6 @@ public class PushLatencyManager {
@VisibleForTesting
CompletableFuture<PushRecord> takePushRecord(final UUID accountUuid, final long deviceId) {
final String key = getFirstUnacknowledgedPushKey(accountUuid, deviceId);
final String legacyKey = getLegacyFirstUnacknowledgedPushKey(accountUuid, deviceId);
return redisCluster.withCluster(connection -> {
final CompletableFuture<PushRecord> getFuture = connection.async().get(key).toCompletableFuture()
@ -168,34 +167,17 @@ public class PushLatencyManager {
}
});
final CompletableFuture<PushRecord> legacyGetFuture = connection.async().get(legacyKey).toCompletableFuture()
.thenApply(timestampString -> {
if (StringUtils.isNotEmpty(timestampString)) {
return new PushRecord(Instant.ofEpochMilli(Long.parseLong(timestampString)), null);
} else {
return null;
}
});
final CompletableFuture<PushRecord> pushRecordFuture = getFuture.thenCombine(legacyGetFuture,
(a, b) -> a != null ? a : b);
pushRecordFuture.whenComplete((record, cause) -> {
getFuture.whenComplete((record, cause) -> {
if (cause == null) {
connection.async().del(key, legacyKey);
connection.async().del(key);
}
});
return pushRecordFuture;
return getFuture;
});
}
private static String getFirstUnacknowledgedPushKey(final UUID accountUuid, final long deviceId) {
return "push_latency::v2::" + accountUuid.toString() + "::" + deviceId;
}
@VisibleForTesting
static String getLegacyFirstUnacknowledgedPushKey(final UUID accountUuid, final long deviceId) {
return "push_latency::" + accountUuid.toString() + "::" + deviceId;
}
}

View File

@ -18,7 +18,6 @@ import java.util.Collections;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@ -71,30 +70,4 @@ class PushLatencyManagerTest {
assertNull(pushLatencyManager.takePushRecord(accountUuid, deviceId).get());
}
@Test
void testTakeLegacyRecord() throws ExecutionException, InterruptedException {
final UUID accountUuid = UUID.randomUUID();
final long deviceId = 1;
final Instant pushTimestamp = Instant.ofEpochMilli(123456789);
final PushLatencyManager pushLatencyManager = new PushLatencyManager(REDIS_CLUSTER_EXTENSION.getRedisCluster(),
dynamicConfigurationManager, Clock.fixed(pushTimestamp, ZoneId.systemDefault()));
assertNull(pushLatencyManager.takePushRecord(accountUuid, deviceId).get());
// Inject a legacy record
REDIS_CLUSTER_EXTENSION.getRedisCluster().useCluster(connection ->
connection.sync().set(PushLatencyManager.getLegacyFirstUnacknowledgedPushKey(accountUuid, deviceId),
String.valueOf(pushTimestamp.toEpochMilli())));
final PushRecord pushRecord = pushLatencyManager.takePushRecord(accountUuid, deviceId).get();
assertNotNull(pushRecord);
assertEquals(pushTimestamp, pushRecord.getTimestamp());
assertNull(pushRecord.getPushType());
assertNull(pushLatencyManager.takePushRecord(accountUuid, deviceId).get());
}
}