Mholloway has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/371727 )
Change subject: Hygiene: Require a RemoteLogException in logRemoteError[IfProd] ...................................................................... Hygiene: Require a RemoteLogException in logRemoteError[IfProd] We have a RemoteLogException class that's intended to extract useful information for an exception for remote logging. The logRemoteError and logRemoteErrorIfProd methods seem to expect this implicitly, but they are currently defined to accept generic Throwables. This updates their signatures to require a RemoteLogException, to avoid a situation in which errors are reported but without any useful diagnostic information.[1] [1] E.g., https://rink.hockeyapp.net/manage/apps/226650/app_versions/126/crash_reasons/180971093?type=overview Change-Id: I19366656db8d0af1832566cc4ec5a50c2fed6a67 --- M app/src/main/java/org/wikipedia/auth/AccountUtil.java M app/src/main/java/org/wikipedia/json/TabUnmarshaller.java M app/src/main/java/org/wikipedia/page/PageFragment.java M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java M app/src/main/java/org/wikipedia/util/log/L.java M app/src/main/java/org/wikipedia/views/FacePostprocessor.java 7 files changed, 23 insertions(+), 17 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/27/371727/1 diff --git a/app/src/main/java/org/wikipedia/auth/AccountUtil.java b/app/src/main/java/org/wikipedia/auth/AccountUtil.java index 4aae2d0..04eac2b 100644 --- a/app/src/main/java/org/wikipedia/auth/AccountUtil.java +++ b/app/src/main/java/org/wikipedia/auth/AccountUtil.java @@ -13,6 +13,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.json.GsonMarshaller; import org.wikipedia.json.GsonUnmarshaller; import org.wikipedia.login.LoginResult; @@ -129,7 +130,7 @@ return accounts[0]; } } catch (SecurityException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } return null; } diff --git a/app/src/main/java/org/wikipedia/json/TabUnmarshaller.java b/app/src/main/java/org/wikipedia/json/TabUnmarshaller.java index 54f21fb..4b25f29 100644 --- a/app/src/main/java/org/wikipedia/json/TabUnmarshaller.java +++ b/app/src/main/java/org/wikipedia/json/TabUnmarshaller.java @@ -40,7 +40,7 @@ for (PageBackStackItem item : tab.getBackStack()) { if (TextUtils.isEmpty(item.getTitle().getWikiSite().authority()) || TextUtils.isEmpty(item.getHistoryEntry().getTitle().getWikiSite().authority())) { - L.logRemoteErrorIfProd(new IllegalArgumentException("Format error in serialized tab list.")); + L.logRemoteErrorIfProd(new RemoteLogException(new IllegalArgumentException("Format error in serialized tab list."))); bad = true; break; } diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java b/app/src/main/java/org/wikipedia/page/PageFragment.java index 4b3773c..6bdbaf9 100755 --- a/app/src/main/java/org/wikipedia/page/PageFragment.java +++ b/app/src/main/java/org/wikipedia/page/PageFragment.java @@ -48,6 +48,7 @@ import org.wikipedia.bridge.CommunicationBridge; import org.wikipedia.bridge.DarkModeMarshaller; import org.wikipedia.concurrency.CallbackTask; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.dataclient.WikiSite; import org.wikipedia.dataclient.okhttp.OkHttpWebViewClient; import org.wikipedia.descriptions.DescriptionEditActivity; @@ -1121,7 +1122,7 @@ builder.setView(textView); builder.show(); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } }); @@ -1140,7 +1141,7 @@ linkHandler.onUrlClick(href, messagePayload.optString("title")); } } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } }); @@ -1155,7 +1156,7 @@ GalleryFunnel.SOURCE_NON_LEAD_IMAGE), Constants.ACTIVITY_REQUEST_GALLERY); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } }); diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java index ae22167..96f789c 100644 --- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java +++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java @@ -22,6 +22,7 @@ import org.wikipedia.auth.AccountUtil; import org.wikipedia.bridge.CommunicationBridge; import org.wikipedia.concurrency.CallbackTask; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.database.contract.PageImageHistoryContract; import org.wikipedia.dataclient.ServiceError; import org.wikipedia.dataclient.mwapi.MwException; @@ -279,7 +280,7 @@ } pageLoadWebViewReady(); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } }); @@ -292,7 +293,7 @@ } pageLoadDisplayNonLeadSection(payload.getInt("index")); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } }); @@ -383,7 +384,7 @@ wrapper.put("sequence", sequenceNumber.get()); bridge.sendMessage("beginNewPage", wrapper); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } @@ -692,7 +693,7 @@ (int) (stagedScrollY / DimenUtil.getDensityScalar())); bridge.sendMessage("displaySection", wrapper); } catch (JSONException e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } } diff --git a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java index c4ab2bb..2ef284a 100644 --- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java +++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java @@ -7,6 +7,7 @@ import android.text.TextUtils; import org.wikipedia.WikipediaApp; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.database.contract.PageImageHistoryContract; import org.wikipedia.dataclient.WikiSite; import org.wikipedia.dataclient.okhttp.OkHttpConnectionFactory; @@ -145,7 +146,7 @@ if (!ThrowableUtil.isOffline(e)) { // If it's anything but a transient network error, let's log it aggressively, // to make sure we've fixed any other errors with saving pages. - L.logRemoteError(e); + L.logRemoteError(new RemoteLogException(e)); } dao.failDiskTransaction(row); continue; diff --git a/app/src/main/java/org/wikipedia/util/log/L.java b/app/src/main/java/org/wikipedia/util/log/L.java index c5cc850..59706ad 100644 --- a/app/src/main/java/org/wikipedia/util/log/L.java +++ b/app/src/main/java/org/wikipedia/util/log/L.java @@ -4,6 +4,7 @@ import android.support.annotation.Nullable; import android.util.Log; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.util.ReleaseUtil; /** Logging utility like {@link Log} but with implied tags. */ @@ -105,11 +106,11 @@ LEVEL_E.log(msg, t); } - public static void logRemoteErrorIfProd(@NonNull Throwable t) { + public static void logRemoteErrorIfProd(@NonNull RemoteLogException e) { if (ReleaseUtil.isProdRelease()) { - logRemoteError(t); + logRemoteError(e); } else { - throw new RuntimeException(t); + throw new RuntimeException(e); } } @@ -119,10 +120,10 @@ // Favor logRemoteErrorIfProd(). If it's worth consuming bandwidth and developer hours, it's // worth crashing on everything but prod - public static void logRemoteError(@NonNull Throwable t) { - LEVEL_E.log("", t); + public static void logRemoteError(@NonNull RemoteLogException e) { + LEVEL_E.log("", e); if (REMOTE_EXCEPTION_LOGGER != null) { - REMOTE_EXCEPTION_LOGGER.log(t); + REMOTE_EXCEPTION_LOGGER.log(e); } } diff --git a/app/src/main/java/org/wikipedia/views/FacePostprocessor.java b/app/src/main/java/org/wikipedia/views/FacePostprocessor.java index 90e7a2c..90e8703 100644 --- a/app/src/main/java/org/wikipedia/views/FacePostprocessor.java +++ b/app/src/main/java/org/wikipedia/views/FacePostprocessor.java @@ -17,6 +17,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; +import org.wikipedia.crash.RemoteLogException; import org.wikipedia.util.MathUtil; import org.wikipedia.util.log.L; @@ -48,7 +49,7 @@ try { facePos = detectFace(testBmp); } catch (OutOfMemoryError e) { - L.logRemoteErrorIfProd(e); + L.logRemoteErrorIfProd(new RemoteLogException(e)); } int defaultColor = ContextCompat.getColor(WikipediaApp.getInstance(), R.color.dark_gray); listener.get().onImageLoaded(destBitmap.getHeight(), facePos, -- To view, visit https://gerrit.wikimedia.org/r/371727 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I19366656db8d0af1832566cc4ec5a50c2fed6a67 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits