Reduce DB updates on send path, move support SDK up to 24

// FREEBIE
This commit is contained in:
Moxie Marlinspike
2016-12-21 09:49:01 -08:00
parent 4e32fb21fe
commit cdf3a849e9
14 changed files with 66 additions and 81 deletions

View File

@@ -64,8 +64,8 @@ public class MmsSendJob extends SendJob {
@Override
public void onAdded() {
MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
database.markAsSending(messageId);
// MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
// database.markAsSending(messageId);
}
@Override
@@ -82,7 +82,7 @@ public class MmsSendJob extends SendJob {
final SendConf sendConf = new CompatMmsConnection(context).send(pduBytes, message.getSubscriptionId());
final MmsSendResult result = getSendResult(sendConf, pdu);
database.markAsSent(messageId);
database.markAsSent(messageId, false);
markAttachmentsUploaded(messageId, message.getAttachments());
} catch (UndeliverableMessageException | IOException e) {
Log.w(TAG, e);

View File

@@ -395,8 +395,7 @@ public class PushDecryptJob extends ContextJob {
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients);
long messageId = database.insertMessageOutbox(masterSecret, expirationUpdateMessage, threadId, false);
database.markAsSent(messageId);
database.markAsPush(messageId);
database.markAsSent(messageId, true);
DatabaseFactory.getRecipientPreferenceDatabase(context).setExpireMessages(recipients, message.getMessage().getExpiresInSeconds());
@@ -429,8 +428,7 @@ public class PushDecryptJob extends ContextJob {
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients);
long messageId = database.insertMessageOutbox(masterSecret, mediaMessage, threadId, false);
database.markAsSent(messageId);
database.markAsPush(messageId);
database.markAsSent(messageId, true);
for (DatabaseAttachment attachment : DatabaseFactory.getAttachmentDatabase(context).getAttachmentsForMessage(messageId)) {
ApplicationContext.getInstance(context)
@@ -506,9 +504,7 @@ public class PushDecryptJob extends ContextJob {
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients);
long messageId = database.insertMessageOutbox(masterSecret, threadId, outgoingTextMessage, false, message.getTimestamp());
database.markAsSent(messageId);
database.markAsPush(messageId);
database.markAsSecure(messageId);
database.markAsSent(messageId, true);
if (smsMessageId.isPresent()) {
database.deleteMessage(smsMessageId.get());

View File

@@ -70,8 +70,8 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
@Override
public void onAdded() {
DatabaseFactory.getMmsDatabase(context)
.markAsSending(messageId);
// DatabaseFactory.getMmsDatabase(context)
// .markAsSending(messageId);
}
@Override
@@ -84,9 +84,9 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
try {
deliver(masterSecret, message, filterRecipientId);
database.markAsPush(messageId);
database.markAsSecure(messageId);
database.markAsSent(messageId);
// database.markAsPush(messageId);
// database.markAsSecure(messageId);
database.markAsSent(messageId, true);
markAttachmentsUploaded(messageId, message.getAttachments());
if (message.getExpiresIn() > 0 && !message.isExpirationUpdate()) {
@@ -114,11 +114,11 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
}
database.addFailures(messageId, failures);
database.markAsPush(messageId);
// database.markAsPush(messageId);
if (e.getNetworkExceptions().isEmpty() && e.getUntrustedIdentityExceptions().isEmpty()) {
database.markAsSecure(messageId);
database.markAsSent(messageId);
// database.markAsSecure(messageId);
database.markAsSent(messageId, true);
markAttachmentsUploaded(messageId, message.getAttachments());
} else {
database.markAsSentFailed(messageId);

View File

@@ -53,9 +53,9 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
@Override
public void onAdded() {
MmsDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);
mmsDatabase.markAsSending(messageId);
mmsDatabase.markAsPush(messageId);
// MmsDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);
// mmsDatabase.markAsSending(messageId);
// mmsDatabase.markAsPush(messageId);
}
@Override
@@ -69,9 +69,9 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
try {
deliver(masterSecret, message);
database.markAsPush(messageId);
database.markAsSecure(messageId);
database.markAsSent(messageId);
// database.markAsPush(messageId);
// database.markAsSecure(messageId);
database.markAsSent(messageId, true);
markAttachmentsUploaded(messageId, message.getAttachments());
if (message.getExpiresIn() > 0 && !message.isExpirationUpdate()) {
@@ -91,7 +91,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
database.addMismatchedIdentity(messageId, recipientId, uie.getIdentityKey());
database.markAsSentFailed(messageId);
database.markAsPush(messageId);
// database.markAsPush(messageId);
}
}

View File

@@ -46,11 +46,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
}
@Override
public void onAdded() {
SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
smsDatabase.markAsSending(messageId);
smsDatabase.markAsPush(messageId);
}
public void onAdded() {}
@Override
public void onSend(MasterSecret masterSecret) throws NoSuchMessageException, RetryLaterException {
@@ -62,9 +58,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
Log.w(TAG, "Sending message: " + messageId);
deliver(record);
database.markAsPush(messageId);
database.markAsSecure(messageId);
database.markAsSent(messageId);
database.markAsSent(messageId, true);
if (record.getExpiresIn() > 0) {
database.markExpireStarted(messageId);

View File

@@ -40,10 +40,7 @@ public class SmsSendJob extends SendJob {
}
@Override
public void onAdded() {
SmsDatabase database = DatabaseFactory.getEncryptingSmsDatabase(context);
database.markAsSending(messageId);
}
public void onAdded() {}
@Override
public void onSend(MasterSecret masterSecret) throws NoSuchMessageException {

View File

@@ -78,7 +78,7 @@ public class SmsSentJob extends MasterSecretJob {
switch (result) {
case Activity.RESULT_OK:
database.markAsSent(messageId);
database.markAsSent(messageId, false);
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_RADIO_OFF: