Add more logging around threads in message sends.

This commit is contained in:
Greyson Parrelli 2021-03-08 15:27:10 -05:00 committed by Cody Henthorne
parent d1e0f3646a
commit 992b04f8c5
7 changed files with 26 additions and 20 deletions

View file

@ -2070,6 +2070,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
distributionType = args.getDistributionType(); distributionType = args.getDistributionType();
glideRequests = GlideApp.with(this); glideRequests = GlideApp.with(this);
Log.i(TAG, "[initializeResources] Recipient: " + recipient.getId() + ", Thread: " + threadId);
recipient.observe(this, this::onRecipientChanged); recipient.observe(this, this::onRecipientChanged);
} }
@ -2706,8 +2708,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
linkPreviewViewModel.hasLinkPreview() || linkPreviewViewModel.hasLinkPreview() ||
needsSplit; needsSplit;
Log.i(TAG, "isManual Selection: " + sendButton.isManualSelection()); Log.i(TAG, "[sendMessage] recipient: " + recipient.getId() + ", threadId: " + threadId + ", forceSms: " + forceSms + ", isManual: " + sendButton.isManualSelection());
Log.i(TAG, "forceSms: " + forceSms);
if ((recipient.isMmsGroup() || recipient.getEmail().isPresent()) && !isMmsEnabled) { if ((recipient.isMmsGroup() || recipient.getEmail().isPresent()) && !isMmsEnabled) {
handleManualMmsRequired(); handleManualMmsRequired();
@ -2874,18 +2875,9 @@ public class ConversationActivity extends PassphraseRequiredActivity
silentlySetComposeText(""); silentlySetComposeText("");
final long id = fragment.stageOutgoingMessage(message); final long id = fragment.stageOutgoingMessage(message);
new AsyncTask<OutgoingTextMessage, Void, Long>() { SimpleTask.run(() -> {
@Override return MessageSender.send(context, message, thread, forceSms, () -> fragment.releaseOutgoingMessage(id));
protected Long doInBackground(OutgoingTextMessage... messages) { }, this::sendComplete);
return MessageSender.send(context, messages[0], thread, forceSms, () -> fragment.releaseOutgoingMessage(id));
}
@Override
protected void onPostExecute(Long result) {
sendComplete(result);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, message);
}) })
.execute(); .execute();
} }

View file

@ -327,6 +327,8 @@ public class ConversationFragment extends LoggingFragment {
public void onActivityCreated(Bundle bundle) { public void onActivityCreated(Bundle bundle) {
super.onActivityCreated(bundle); super.onActivityCreated(bundle);
Log.d(TAG, "[onActivityCreated]");
initializeScrollButtonAnimations(); initializeScrollButtonAnimations();
initializeResources(); initializeResources();
initializeMessageRequestViewModel(); initializeMessageRequestViewModel();
@ -377,6 +379,8 @@ public class ConversationFragment extends LoggingFragment {
} }
public void onNewIntent() { public void onNewIntent() {
Log.d(TAG, "[onNewIntent]");
if (actionMode != null) { if (actionMode != null) {
actionMode.finish(); actionMode.finish();
} }
@ -673,9 +677,12 @@ public class ConversationFragment extends LoggingFragment {
} }
public void reload(Recipient recipient, long threadId) { public void reload(Recipient recipient, long threadId) {
Log.d(TAG, "[reload] Recipient: " + recipient.getId() + ", ThreadId: " + threadId);
this.recipient = recipient.live(); this.recipient = recipient.live();
if (this.threadId != threadId) { if (this.threadId != threadId) {
Log.i(TAG, "ThreadId changed from " + this.threadId + " to " + threadId + ". Recipient was " + this.recipient.getId() + " and is now " + recipient.getId());
this.threadId = threadId; this.threadId = threadId;
messageRequestViewModel.setConversationInfo(recipient.getId(), threadId); messageRequestViewModel.setConversationInfo(recipient.getId(), threadId);

View file

@ -115,7 +115,7 @@ class ConversationViewModel extends ViewModel {
@MainThread @MainThread
void onConversationDataAvailable(@NonNull RecipientId recipientId, long threadId, int startingPosition) { void onConversationDataAvailable(@NonNull RecipientId recipientId, long threadId, int startingPosition) {
Log.d(TAG, "[onConversationDataAvailable] threadId: " + threadId + ", startingPosition: " + startingPosition); Log.d(TAG, "[onConversationDataAvailable] recipientId: " + recipientId + ", threadId: " + threadId + ", startingPosition: " + startingPosition);
this.jumpToPosition = startingPosition; this.jumpToPosition = startingPosition;
this.threadId.setValue(threadId); this.threadId.setValue(threadId);

View file

@ -1053,7 +1053,13 @@ public class ThreadDatabase extends Database {
public long getOrCreateValidThreadId(@NonNull Recipient recipient, long candidateId, int distributionType) { public long getOrCreateValidThreadId(@NonNull Recipient recipient, long candidateId, int distributionType) {
if (candidateId != -1) { if (candidateId != -1) {
Optional<Long> remapped = RemappedRecords.getInstance().getThread(context, candidateId); Optional<Long> remapped = RemappedRecords.getInstance().getThread(context, candidateId);
return remapped.isPresent() ? remapped.get() : candidateId;
if (remapped.isPresent()) {
Log.i(TAG, "Using remapped threadId: " + candidateId + " -> " + remapped.get());
return remapped.get();
} else {
return candidateId;
}
} else { } else {
return getThreadIdFor(recipient, distributionType); return getThreadIdFor(recipient, distributionType);
} }

View file

@ -155,10 +155,10 @@ public final class PushGroupSendJob extends PushSendJob {
{ {
MessageDatabase database = DatabaseFactory.getMmsDatabase(context); MessageDatabase database = DatabaseFactory.getMmsDatabase(context);
OutgoingMediaMessage message = database.getOutgoingMessage(messageId); OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
List<NetworkFailure> existingNetworkFailures = message.getNetworkFailures(); List<NetworkFailure> existingNetworkFailures = message.getNetworkFailures();
List<IdentityKeyMismatch> existingIdentityMismatches = message.getIdentityKeyMismatches(); List<IdentityKeyMismatch> existingIdentityMismatches = message.getIdentityKeyMismatches();
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(message.getRecipient());
ApplicationDependencies.getJobManager().cancelAllInQueue(TypingSendJob.getQueue(threadId)); ApplicationDependencies.getJobManager().cancelAllInQueue(TypingSendJob.getQueue(threadId));
if (database.isSent(messageId)) { if (database.isSent(messageId)) {
@ -177,7 +177,7 @@ public final class PushGroupSendJob extends PushSendJob {
} }
try { try {
log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId); log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getRecipient().getId() + ", Thread: " + threadId);
if (!groupRecipient.resolve().isProfileSharing() && !database.isGroupQuitMessage(messageId)) { if (!groupRecipient.resolve().isProfileSharing() && !database.isGroupQuitMessage(messageId)) {
RecipientUtil.shareProfileIfFirstSecureMessage(context, groupRecipient); RecipientUtil.shareProfileIfFirstSecureMessage(context, groupRecipient);

View file

@ -110,6 +110,7 @@ public class PushMediaSendJob extends PushSendJob {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
MessageDatabase database = DatabaseFactory.getMmsDatabase(context); MessageDatabase database = DatabaseFactory.getMmsDatabase(context);
OutgoingMediaMessage message = database.getOutgoingMessage(messageId); OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
if (database.isSent(messageId)) { if (database.isSent(messageId)) {
warn(TAG, String.valueOf(message.getSentTimeMillis()), "Message " + messageId + " was already sent. Ignoring."); warn(TAG, String.valueOf(message.getSentTimeMillis()), "Message " + messageId + " was already sent. Ignoring.");
@ -117,7 +118,7 @@ public class PushMediaSendJob extends PushSendJob {
} }
try { try {
log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId); log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getRecipient().getId() + ", Thread: " + threadId);
RecipientUtil.shareProfileIfFirstSecureMessage(context, message.getRecipient()); RecipientUtil.shareProfileIfFirstSecureMessage(context, message.getRecipient());

View file

@ -83,7 +83,7 @@ public class PushTextSendJob extends PushSendJob {
} }
try { try {
log(TAG, String.valueOf(record.getDateSent()), "Sending message: " + messageId); log(TAG, String.valueOf(record.getDateSent()), "Sending message: " + messageId + ", Recipient: " + record.getRecipient().getId() + ", Thread: " + record.getThreadId());
RecipientUtil.shareProfileIfFirstSecureMessage(context, record.getRecipient()); RecipientUtil.shareProfileIfFirstSecureMessage(context, record.getRecipient());