diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/experiment/Experiment.java b/service/src/main/java/org/whispersystems/textsecuregcm/experiment/Experiment.java index f049a84a4..4cf24bc8d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/experiment/Experiment.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/experiment/Experiment.java @@ -18,6 +18,7 @@ import java.util.concurrent.Executor; import java.util.function.Supplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; /** * An experiment compares the results of two operations and records metrics to assess how frequently they match. @@ -70,6 +71,14 @@ public class Experiment { this.experimentNullMismatchTimer = experimentNullMismatchTimer; } + public void compareMonoResult(final T expected, final Mono experimentMono) { + final Timer.Sample sample = Timer.start(); + + experimentMono.subscribe( + actual -> recordResult(expected, actual, sample), + cause -> recordError(cause, sample)); + } + public void compareFutureResult(final T expected, final CompletionStage experimentStage) { final Timer.Sample sample = Timer.start(); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java index a943be541..d26bc0b7d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java @@ -463,8 +463,7 @@ public class MessagesCache extends RedisClusterPubSubAdapter imp } }); - experiment.compareFutureResult(mrmMessage.toBuilder().clearSharedMrmKey().build(), - mrmMessageMono.toFuture()); + experiment.compareMonoResult(mrmMessage.toBuilder().clearSharedMrmKey().build(), mrmMessageMono); return mrmMessageMono; } else {