Revert "Merge database writes for attachment compression."

This reverts commit c50993bbf7c4a9e10a253f8d234c621ededffc47.
This commit is contained in:
Nicholas Tinsley 2024-01-02 17:49:16 -05:00 committed by Clark Chen
parent 59c75663b1
commit 549ef9dabc
2 changed files with 15 additions and 20 deletions

View file

@ -886,13 +886,11 @@ public class AttachmentTable extends DatabaseTable {
*/
public void updateAttachmentData(@NonNull DatabaseAttachment databaseAttachment,
@NonNull MediaStream mediaStream,
boolean onlyModifyThisAttachment,
boolean withFastStart)
boolean onlyModifyThisAttachment)
throws MmsException, IOException
{
AttachmentId attachmentId = databaseAttachment.getAttachmentId();
SQLiteDatabase database = databaseHelper.getSignalWritableDatabase();
DataInfo oldDataInfo = getAttachmentDataFileInfo(attachmentId, DATA);
SQLiteDatabase database = databaseHelper.getSignalWritableDatabase();
DataInfo oldDataInfo = getAttachmentDataFileInfo(databaseAttachment.getAttachmentId(), DATA);
if (oldDataInfo == null) {
throw new MmsException("No attachment data found!");
@ -912,15 +910,7 @@ public class AttachmentTable extends DatabaseTable {
database.beginTransaction();
try {
TransformProperties transformProperties = databaseAttachment.getTransformProperties();
dataInfo = deduplicateAttachment(dataInfo, attachmentId, transformProperties);
transformProperties = transformProperties.withSkipTransform();
if (withFastStart) {
transformProperties = transformProperties.withMp4Faststart();
}
dataInfo = deduplicateAttachment(dataInfo, databaseAttachment.getAttachmentId(), databaseAttachment.getTransformProperties());
ContentValues contentValues = new ContentValues();
contentValues.put(SIZE, dataInfo.length);
@ -930,10 +920,9 @@ public class AttachmentTable extends DatabaseTable {
contentValues.put(DATA, dataInfo.file.getAbsolutePath());
contentValues.put(DATA_RANDOM, dataInfo.random);
contentValues.put(DATA_HASH, dataInfo.hash);
contentValues.put(TRANSFORM_PROPERTIES, transformProperties.serialize());
int updateCount = updateAttachmentAndMatchingHashes(database,
attachmentId,
databaseAttachment.getAttachmentId(),
isSingleUseOfData ? dataInfo.hash : oldDataInfo.hash,
contentValues);

View file

@ -7,6 +7,7 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import androidx.media3.common.MimeTypes;
import org.greenrobot.eventbus.EventBus;
@ -22,8 +23,8 @@ import org.thoughtcrime.securesms.crypto.ModernEncryptingPartOutputStream;
import org.thoughtcrime.securesms.database.AttachmentTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.events.PartProgressEvent;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JsonJobData;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader;
import org.thoughtcrime.securesms.mms.MediaConstraints;
@ -36,6 +37,7 @@ import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.ImageCompressionUtil;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.MemoryFileDescriptor;
import org.thoughtcrime.securesms.util.MemoryFileDescriptor.MemoryFileException;
import org.thoughtcrime.securesms.video.InMemoryTranscoder;
import org.thoughtcrime.securesms.video.StreamingTranscoder;
@ -170,8 +172,9 @@ public final class AttachmentCompressionJob extends BaseJob {
} else if (constraints.canResize(attachment)) {
Log.i(TAG, "Compressing image.");
try (MediaStream converted = compressImage(context, attachment, constraints)) {
attachmentDatabase.updateAttachmentData(attachment, converted, false, false);
attachmentDatabase.updateAttachmentData(attachment, converted, false);
}
attachmentDatabase.markAttachmentAsTransformed(attachmentId, false);
} else if (constraints.isSatisfied(context, attachment)) {
Log.i(TAG, "Not compressing.");
attachmentDatabase.markAttachmentAsTransformed(attachmentId, false);
@ -247,7 +250,7 @@ public final class AttachmentCompressionJob extends BaseJob {
100));
try (MediaStream mediaStream = new MediaStream(ModernDecryptingPartInputStream.createFor(attachmentSecret, file, 0), MimeTypes.VIDEO_MP4, 0, 0)) {
attachmentDatabase.updateAttachmentData(attachment, mediaStream, true, false);
attachmentDatabase.updateAttachmentData(attachment, mediaStream, true);
}
} finally {
if (!file.delete()) {
@ -255,6 +258,8 @@ public final class AttachmentCompressionJob extends BaseJob {
}
}
attachmentDatabase.markAttachmentAsTransformed(attachment.getAttachmentId(), false);
return Objects.requireNonNull(attachmentDatabase.getAttachment(attachment.getAttachmentId()));
} else {
Log.i(TAG, "Transcode was not required");
@ -273,7 +278,8 @@ public final class AttachmentCompressionJob extends BaseJob {
100,
percent));
}, cancelationSignal)) {
attachmentDatabase.updateAttachmentData(attachment, mediaStream, true, mediaStream.getFaststart());
attachmentDatabase.updateAttachmentData(attachment, mediaStream, true);
attachmentDatabase.markAttachmentAsTransformed(attachment.getAttachmentId(), mediaStream.getFaststart());
}
eventBus.postSticky(new PartProgressEvent(attachment,