From fcbd594def0bb5cb2ae3c3c3186c12c41c990f72 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sun, 20 Dec 2020 01:04:03 -0500 Subject: [PATCH] Add a system to easily trace jobs. --- .../securesms/jobs/AttachmentCompressionJob.java | 5 +++++ .../securesms/jobs/AttachmentCopyJob.java | 5 +++++ .../securesms/jobs/AttachmentUploadJob.java | 5 +++++ .../org/thoughtcrime/securesms/jobs/BaseJob.java | 16 ++++++++++++++++ .../securesms/jobs/DirectoryRefreshJob.java | 5 +++++ .../thoughtcrime/securesms/jobs/PushSendJob.java | 5 +++++ .../securesms/jobs/RetrieveProfileJob.java | 5 +++++ 7 files changed, 46 insertions(+) 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 0c1ce51067..cd142f5e09 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 13e0b2e6e7..b1f2796858 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 bb1f6aba3a..00b2d842d9 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 4c946e7968..4d5826b797 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 308395dfbd..980f819508 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 e32937620b..4f9e0af704 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 a672d0a75c..cf70d45680 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");