diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java index 0c1ce5106..cd142f5e0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java @@ -104,6 +104,11 @@ public final class AttachmentCompressionJob extends BaseJob { return KEY; } + @Override + protected boolean shouldTrace() { + return true; + } + @Override public void onRun() throws Exception { Log.d(TAG, "Running for: " + attachmentId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCopyJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCopyJob.java index 13e0b2e6e..b1f279685 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCopyJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCopyJob.java @@ -68,6 +68,11 @@ public class AttachmentCopyJob extends BaseJob { return KEY; } + @Override + protected boolean shouldTrace() { + return true; + } + @Override protected void onRun() throws Exception { AttachmentDatabase database = DatabaseFactory.getAttachmentDatabase(context); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java index bb1f6aba3..00b2d842d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java @@ -88,6 +88,11 @@ public final class AttachmentUploadJob extends BaseJob { return KEY; } + @Override + protected boolean shouldTrace() { + return true; + } + @Override public void onRun() throws Exception { Data inputData = getInputData(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BaseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/BaseJob.java index 4c946e796..4d5826b79 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BaseJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BaseJob.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.signal.core.util.logging.Log; +import org.signal.core.util.tracing.Tracer; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobLogger; @@ -21,6 +22,10 @@ public abstract class BaseJob extends Job { @Override public @NonNull Result run() { + if (shouldTrace()) { + Tracer.getInstance().start(getClass().getSimpleName()); + } + try { onRun(); return Result.success(outputData); @@ -35,6 +40,10 @@ public abstract class BaseJob extends Job { Log.w(TAG, JobLogger.format(this, "Encountered a failing exception."), e); return Result.failure(); } + } finally { + if (shouldTrace()) { + Tracer.getInstance().end(getClass().getSimpleName()); + } } } @@ -42,6 +51,13 @@ public abstract class BaseJob extends Job { protected abstract boolean onShouldRetry(@NonNull Exception e); + /** + * Whether or not the job should be traced with the {@link org.signal.core.util.tracing.Tracer}. + */ + protected boolean shouldTrace() { + return false; + } + /** * If this job is part of a {@link Chain}, data set here will be passed as input data to the next * job(s) in the chain. diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/DirectoryRefreshJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/DirectoryRefreshJob.java index 308395dfb..980f81950 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/DirectoryRefreshJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/DirectoryRefreshJob.java @@ -61,6 +61,11 @@ public class DirectoryRefreshJob extends BaseJob { return KEY; } + @Override + protected boolean shouldTrace() { + return true; + } + @Override public void onRun() throws IOException { Log.i(TAG, "DirectoryRefreshJob.onRun()"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index e32937620..4f9e0af70 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -108,6 +108,11 @@ public abstract class PushSendJob extends SendJob { } } + @Override + protected boolean shouldTrace() { + return true; + } + protected Optional getProfileKey(@NonNull Recipient recipient) { if (!recipient.resolve().isSystemContact() && !recipient.resolve().isProfileSharing()) { return Optional.absent(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java index a672d0a75..cf70d4568 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java @@ -230,6 +230,11 @@ public class RetrieveProfileJob extends BaseJob { return KEY; } + @Override + protected boolean shouldTrace() { + return true; + } + @Override public void onRun() throws IOException, RetryLaterException { Stopwatch stopwatch = new Stopwatch("RetrieveProfile");