Remove legacy push latency measurement pathways
This commit is contained in:
parent
de6e9d31c9
commit
cbdec0cb22
|
@ -152,7 +152,6 @@ public class PushLatencyManager {
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
CompletableFuture<PushRecord> takePushRecord(final UUID accountUuid, final long deviceId) {
|
CompletableFuture<PushRecord> takePushRecord(final UUID accountUuid, final long deviceId) {
|
||||||
final String key = getFirstUnacknowledgedPushKey(accountUuid, deviceId);
|
final String key = getFirstUnacknowledgedPushKey(accountUuid, deviceId);
|
||||||
final String legacyKey = getLegacyFirstUnacknowledgedPushKey(accountUuid, deviceId);
|
|
||||||
|
|
||||||
return redisCluster.withCluster(connection -> {
|
return redisCluster.withCluster(connection -> {
|
||||||
final CompletableFuture<PushRecord> getFuture = connection.async().get(key).toCompletableFuture()
|
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()
|
getFuture.whenComplete((record, cause) -> {
|
||||||
.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) -> {
|
|
||||||
if (cause == null) {
|
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) {
|
private static String getFirstUnacknowledgedPushKey(final UUID accountUuid, final long deviceId) {
|
||||||
return "push_latency::v2::" + accountUuid.toString() + "::" + deviceId;
|
return "push_latency::v2::" + accountUuid.toString() + "::" + deviceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
static String getLegacyFirstUnacknowledgedPushKey(final UUID accountUuid, final long deviceId) {
|
|
||||||
return "push_latency::" + accountUuid.toString() + "::" + deviceId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ import java.util.Collections;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.jupiter.params.provider.ValueSource;
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
|
@ -71,30 +70,4 @@ class PushLatencyManagerTest {
|
||||||
|
|
||||||
assertNull(pushLatencyManager.takePushRecord(accountUuid, deviceId).get());
|
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());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue