Coder Social home page Coder Social logo

android's People

Contributors

adam000034 avatar bruno-garcia avatar cstavitsky avatar dgbailey avatar idosun avatar marandaneto avatar ndmanvar avatar realkosty avatar sdzhong avatar sentryadam0000345 avatar serglom21 avatar stefanosiano avatar thinkocapo avatar vudngo avatar vusidequest avatar yuval-sentry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

android's Issues

Add Startup Profiling to EmpowerPlantActivity ui.load Transaction

Startup Profiling (Startup Profiling 1 - Decouple Profiler from Transaction #3101, Startup Profiling 2 - Add options and sampling logic #3121, and Startup Profiling 3 - Add ContentProvider and start profile #3128) from the Sentry SDK allows Sentry to track activity before the SDK starts.

This can be useful for cases where a library loads when application starts, but the configuration is slow, or you don’t need the library anymore. This can also highlight other slow functions that happens before SDK starts.

Add Custom Tag (customerType)

Create customerType custom tag, similar to reference React demo's (see following screenshots), which have: small-plan, medium-plan, large-plan, enterprise (ref code)

image image

Reduce time of mock functions in EmpowerPlantActivity transaction

Running the app locally can cause slower performance. The slower performance can hit unintended deadlines. E.g. there is a hard deadline (of 30s) when capturing profiles.

image

Reducing time of mock functions to avoid deadline(s) will allow for testing/validating the app locally.

Note: This is not a problem when generating events via pytests (i.e. https://github.com/sentry-demos/empower/blob/master/tda/mobile_native/android/test_checkout_android.py generates EmpowerPlantActivity transactions of ~25s).

Enable Time To Full Display

Enable Time To Full Display as described in https://docs.sentry.io/platforms/android/performance/instrumentation/automatic-instrumentation/#time-to-full-display, enabling with io.sentry.traces.time-to-full-display.enable and finish manually with Sentry.reportFullyDisplayed();:

Time to full display is dependent on having an active transaction bound to the scope. Ideally, it should be used along with Activity Instrumentation, which starts a transaction and binds it to the scope automatically.

Add Sentry.reportFullyDisplayed(); to the appropriate line such that we can see TTFD data in the Screens page.

Context: Mobile Screens was recently released getsentry/sentry#60127. TTID & TTFD data are available to showcase on Sentry, but requires configuration from the SDK as described in this GitHub Issue.

DB on Main Thread doesn't appear consistently via automation

The DB on Main Thread Performance Issue is not appearing consistently. Over the past 7 days of automation data (discover query), we see 29 DB on Main Thread Performance Issues.

The DB on Main Thread Performance Issue appears on average once every 5.8 hrs.

The DB on Main Thread Performance Issue should appear more frequently.

Execution failed for task uploadSentryProguardMappingsRelease

Environment:
macOS 11.4
Android Studio 4.2.2

Build failed for release configuration with error

Execution failed for task ':app:uploadSentryProguardMappingsRelease'.
> Process 'command '/var/folders/cq/fcg17v_x56z5lr5yzgwlvpm00000gp/T/.sentry-cli9070864541215928418.exe'' finished with non-zero exit value 1

Standardise exception name for flagship error

Right now we are using MainFragment$ItemDeliveryProcessException
TBD what will be standard name for flagship exception across all platforms?
Please comment what you would use for a backend API exception in a real Android app according to Android conventions and common practices?
For now can use BackendAPIException - better than current

Update: Karl mentioned that on mobile platforms exceptions names can be idiomatic and specific to platform. Let's find some middle ground to make it recognizable for SE while looking "normal" for the platform

Flagship Profile with recursive frames

Standardize sentry-demos apps Profile data such that they matches the flask example, which uses get_iterator. It demonstrates Color Coding > By Recursion as follows:
image
src

Currently, all Application Frames for the flagship profile span product_processing have the same duration and does not demonstrate a Color Coding > By Recursion example.
image
src

Requirements

  1. Replace function of product_processing span to have frame name get_iterator
  2. Make get_iterator function recursive, with variety in frame duration as shown in the flask/python reference

Finish upgrade to 3.11.1

Existing PR: #59
seems to have regressed with source code context
Transaction not tested (wasn't sure which one is flagship) - checkout [something]???

Add Automatic Instrumentation - User Interaction Instrumentation

Enable Automatic Instrumentation > User Interaction Instrumentation to avoid needing to manually instrument the checkout [android] transaction with ITransaction checkoutTransaction (ref: app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java):

    public void checkout() {
        selectedStoreItems = this.adapter.getSelectedStoreItems();
        ITransaction checkoutTransaction = Sentry.startTransaction("checkout [android]", "http.client");
        checkoutTransaction.setOperation("http");
        Sentry.configureScope(scope -> scope.setTransaction(checkoutTransaction));

This presumes that the click on the checkout button begins a transaction as per the docs:

The UI instrumentation, once enabled, captures transactions for a set of different user interactions, which include clicks, scrolls, and swipes.

The transaction generated by the User Interaction Instrumentation should be comparable to the manually generated checkout [android] transaction, which includes a trace of 2 transactions and 3 issues, each of which should not be regressed. This transaction and its associated events are a way to demonstrate Distributed Tracing.

Update Alerts so Slack Notifications Trigger on Non-Automated Data

Android 3.1 Demo alerts (sent to #demo3-android) stopped appearing in early March. Formerly, notifications appeared when running the Android 3.1 Demo locally (Android Studio > Devices with the sentry-demos/android app to generate a checkout error).

Update Alerts
https://sentry.io/organizations/demo/alerts/rules/android/14467381/details/ and https://sentry.io/organizations/demo/alerts/rules/android/14754732/details/ so Slack notifications once again trigger on non-automated data.

checkout [android] transaction span has incorrectly associated SentryHttpClientException: HTTP Client Error with status code: 500 error

Problem for branch perf-issues-db_main_thread at this commit:
The checkout [android] transaction has span http.client.connection, which is incorrectly associated with SentryHttpClientException: HTTP Client Error with status code: 500 error. The span’s Status is deadline_exceeded, but this is not accurate. The error should not be due to the http client connection nor deadline--it is due to an associated backend error.
image

Expected Behavior:
Error should to match with current checkout [android], where it has an http.client span with associated error SentryHttpClientException: HTTP Client Error with status code: 500. The span’s Status is internal_error.
image

Show Suspect Commit

Suspect Commit are not appearing on the flagship error (tda-generated, locally generated)

However, they were consistently appearing in tda-generated events and from a local run (event).

What is preventing Suspect Commit from consistently/reliably appearing?

Mock data for Performance > Mobile

Mock data so Time To Initial Display and Time To Full Display are different, and different between releases.

Ensure TTFD is slower than TTID (currently they’re the same).

Create a span operation which has a delay that can be inspected (Performance > Mobile > Screen > the Operation table shows span operations to inspect). The delay may be dependent on build.gradle versionCode such that there are differences between (the two latest) releases.

EmpowerPlantActivity to consistently show CPU Usage and Memory graph

Flagship transaction EmpowerPlantActivity to consistently show CPU Usage and Memory graph:
image

Note: CPU Usage and Memory are sent as part of profile envelopes, so if there's no corresponding profile for a transaction (can use has:profile.id filter), then these graphs won't be shown up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.