Add sync message encrypt local metric to send flows.

This commit is contained in:
Cody Henthorne
2026-05-15 12:21:05 -04:00
committed by jeffrey-signal
parent 6eea4ba937
commit ec47b83f76
4 changed files with 51 additions and 6 deletions
@@ -409,6 +409,10 @@ class IndividualSendJob private constructor(parameters: Parameters, private val
SignalLocalMetrics.IndividualMessageSend.onMessageSent(messageId)
}
override fun onSyncMessageEncrypted() {
SignalLocalMetrics.IndividualMessageSend.onSyncMessageEncrypted(messageId)
}
override fun onSyncMessageSent() {
SignalLocalMetrics.IndividualMessageSend.onSyncMessageSent(messageId)
}
@@ -942,6 +942,11 @@ public final class GroupSendUtil {
public void onSyncMessageSent() {
SignalLocalMetrics.GroupMessageSend.onSenderKeySyncSent(messageId);
}
@Override
public void onSyncMessageEncrypted() {
SignalLocalMetrics.GroupMessageSend.onSenderKeySyncEncrypted(messageId);
}
}
private static final class LegacyMetricEventListener implements LegacyGroupEvents {
@@ -964,6 +969,11 @@ public final class GroupSendUtil {
public void onSyncMessageSent() {
SignalLocalMetrics.GroupMessageSend.onLegacySyncFinished(messageId);
}
@Override
public void onSyncMessageEncrypted() {
SignalLocalMetrics.GroupMessageSend.onLegacySyncEncrypted(messageId);
}
}
/**
@@ -133,6 +133,7 @@ public final class SignalLocalMetrics {
private static final String SPLIT_JOB_PRE_NETWORK = "job-pre-network";
private static final String SPLIT_ENCRYPT = "encrypt";
private static final String SPLIT_NETWORK_MAIN = "network-main";
private static final String SPLIT_SYNC_ENCRYPT = "sync-encrypt";
private static final String SPLIT_NETWORK_SYNC = "network-sync";
private static final String SPLIT_JOB_POST_NETWORK = "job-post-network";
private static final String SPLIT_UI_UPDATE = "ui-update";
@@ -173,6 +174,10 @@ public final class SignalLocalMetrics {
split(messageId, SPLIT_NETWORK_MAIN);
}
public static void onSyncMessageEncrypted(long messageId) {
split(messageId, SPLIT_SYNC_ENCRYPT);
}
public static void onSyncMessageSent(long messageId) {
split(messageId, SPLIT_NETWORK_SYNC);
}
@@ -318,9 +323,11 @@ public final class SignalLocalMetrics {
private static final String SPLIT_SENDER_KEY_SHARED = "sk-shared";
private static final String SPLIT_ENCRYPTION = "encryption";
private static final String SPLIT_NETWORK_SENDER_KEY = "network-sk";
private static final String SPLIT_SENDER_KEY_SYNC_ENCRYPT = "sk-sync-encrypt";
private static final String SPLIT_NETWORK_SENDER_KEY_SYNC = "network-sk-sync";
private static final String SPLIT_MSL_SENDER_KEY = "msl-sk";
private static final String SPLIT_NETWORK_LEGACY = "network-legacy";
private static final String SPLIT_LEGACY_SYNC_ENCRYPT = "legacy-sync-encrypt";
private static final String SPLIT_NETWORK_LEGACY_SYNC = "network-legacy-sync";
private static final String SPLIT_JOB_POST_NETWORK = "job-post-network";
private static final String SPLIT_UI_UPDATE = "ui-update";
@@ -367,6 +374,10 @@ public final class SignalLocalMetrics {
split(messageId, SPLIT_NETWORK_SENDER_KEY);
}
public static void onSenderKeySyncEncrypted(long messageId) {
split(messageId, SPLIT_SENDER_KEY_SYNC_ENCRYPT);
}
public static void onSenderKeySyncSent(long messageId) {
split(messageId, SPLIT_NETWORK_SENDER_KEY_SYNC);
}
@@ -379,6 +390,10 @@ public final class SignalLocalMetrics {
split(messageId, SPLIT_NETWORK_LEGACY);
}
public static void onLegacySyncEncrypted(long messageId) {
split(messageId, SPLIT_LEGACY_SYNC_ENCRYPT);
}
public static void onLegacySyncFinished(long messageId) {
split(messageId, SPLIT_NETWORK_LEGACY_SYNC);
}
@@ -500,7 +500,7 @@ public class SignalServiceMessageSender {
Content syncMessage = createMultiDeviceSentTranscriptContent(content, Optional.of(recipient), timestamp, Collections.singletonList(result), false, Collections.emptySet());
EnvelopeContent syncMessageContent = EnvelopeContent.encrypted(syncMessage, ContentHint.IMPLICIT, Optional.empty());
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, null, false, false);
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, sendEvents, false, false);
}
sendEvents.onSyncMessageSent();
@@ -602,7 +602,7 @@ public class SignalServiceMessageSender {
Content syncMessage = createMultiDeviceSentTranscriptContent(content, Optional.empty(), message.getTimestamp(), results, isRecipientUpdate, Collections.emptySet());
EnvelopeContent syncMessageContent = EnvelopeContent.encrypted(syncMessage, ContentHint.IMPLICIT, Optional.empty());
sendMessage(localAddress, SealedSenderAccess.NONE, message.getTimestamp(), syncMessageContent, false, null, null, false, false);
sendMessage(localAddress, SealedSenderAccess.NONE, message.getTimestamp(), syncMessageContent, false, null, sendEvents, false, false);
}
sendEvents.onSyncMessageSent();
@@ -653,7 +653,7 @@ public class SignalServiceMessageSender {
Content syncMessage = createMultiDeviceSentTranscriptContent(content, recipient, timestamp, results, isRecipientUpdate, Collections.emptySet());
EnvelopeContent syncMessageContent = EnvelopeContent.encrypted(syncMessage, ContentHint.IMPLICIT, Optional.empty());
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, null, false, false);
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, sendEvents, false, false);
}
sendEvents.onSyncMessageSent();
@@ -705,7 +705,7 @@ public class SignalServiceMessageSender {
Content syncMessage = createMultiDeviceSentTranscriptContent(content, recipient, timestamp, results, isRecipientUpdate, Collections.emptySet());
EnvelopeContent syncMessageContent = EnvelopeContent.encrypted(syncMessage, ContentHint.IMPLICIT, Optional.empty());
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, null, false, false);
sendMessage(localAddress, SealedSenderAccess.NONE, timestamp, syncMessageContent, false, null, sendEvents, false, false);
}
sendEvents.onSyncMessageSent();
@@ -2035,11 +2035,17 @@ public class SignalServiceMessageSender {
online,
urgent,
story);
boolean isSentSyncTranscript = content.getContent().isPresent() && content.getContent().get().syncMessage != null && content.getContent().get().syncMessage.sent != null;
if (i == 0 && sendEvents != null) {
sendEvents.onMessageEncrypted();
if (isSentSyncTranscript) {
sendEvents.onSyncMessageEncrypted();
} else {
sendEvents.onMessageEncrypted();
}
}
if (content.getContent().isPresent() && content.getContent().get().syncMessage != null && content.getContent().get().syncMessage.sent != null) {
if (isSentSyncTranscript) {
Log.d(TAG, "[sendMessage][" + timestamp + "] Sending a sent sync message to devices: " + messages.getDevices());
} else if (content.getContent().isPresent() && content.getContent().get().senderKeyDistributionMessage != null) {
Log.d(TAG, "[sendMessage][" + timestamp + "] Sending a SKDM to " + messages.getDestination() + " for devices: " + messages.getDevices() + (content.getContent().get().dataMessage != null ? " (it's piggy-backing on a DataMessage)" : ""));
@@ -3044,6 +3050,7 @@ public class SignalServiceMessageSender {
void onMessageEncrypted();
void onMessageSent();
void onSyncMessageSent();
void onSyncMessageEncrypted();
}
public interface IndividualSendEvents extends SendEvents {
@@ -3056,6 +3063,9 @@ public class SignalServiceMessageSender {
@Override
public void onSyncMessageSent() { }
@Override
public void onSyncMessageEncrypted() { }
};
}
@@ -3072,6 +3082,9 @@ public class SignalServiceMessageSender {
@Override
public void onSyncMessageSent() { }
@Override
public void onSyncMessageEncrypted() { }
};
void onSenderKeyShared();
@@ -3087,6 +3100,9 @@ public class SignalServiceMessageSender {
@Override
public void onSyncMessageSent() { }
@Override
public void onSyncMessageEncrypted() { }
};
}