Log fraction of WebAPK installs we observe finishing |
|||
Issue description
In some cases we may not see the result of a WebAPK install (e.g. an extreme example: the device is turned off.) In those cases, our logging of duration / failure reason wouldn't happen. We should try to measure that bias.
Here's a proposal for a set of histogram buckets:
A. Incremented for WebAPK install start (we do know from other histograms, but useful to have it here too)
B. Incremented for WebAPK installing at N={10, 20, 30+} seconds (If there's a better way to get more granularity here I'm interested!)
C. Incremented for WebAPK definitively finishing {failed, succeeded}
Then we can guess how many net installs we're missing from C - A, and get a rough sense for how many of those are taking a long time regardless of outcome from B[N].
,
Apr 6 2017
That makes a lot of sense. Let's just add a bucket to WebApk.Install.GooglePlayInstallResult. One logistical note: we will have to slice by milestone during analysis since the histogram will mix across different Chrome versions. I'd be happy to see a histogram for how long it took to fail, but the thing that had me more worried were cases where we don't record something as a success or a failure because Chrome stops running before an install times out. You could imagine, for example, a user starting an install and leaving Chrome if they were frustrated with how long it took. But I think adding the bucket above will at least let us quantify the number. I think it probably makes sense to limit InstallDuration to installs through Play, but as you've said I don't think it'll be a big issue numerically. (Just people on old versions of Chrome with the flag flipped, I think?)
,
Apr 6 2017
I guess I understand what you want to record for B now, but I'm not sure who to record this histogram. Perhaps we set up several time point for mile stores like: A) chrome receive token from WAM server, B) Chrome call Install API, C) Chrome get broadcast from Play, etc. For an install, when it passes any time point, we check the time elapsed, and if it falls in a new time range that it hasn't been, then add it to the range? After a second thought, I don't think we need to worry to much about the missing cases. The most time consuming part is after Chrome calls Play's install API. After that, everything is handled by Play, and Chrome just wait for the broadcast. If user is impatient and closes Chrome, I guess they just swap Chrome from recents, right? If my assumption of the user action is correct, the Chrome process is still running (only the activity/renderers are gone), and the WebAPK install receiver is still alive. As long as the API is called, I think 99% we will receive the Play's broadcast. That means, if we records the histogram to when the broadcast is received, we will records almost 99% results. This should be an easy change. Since Yaron's CL to remove unknown sources is in CQ, I will hold off the changes to InstallDuration. After removing that code path, this histogram will just record play install data:) Yes, except people with old Chrome, but would be very limited number.
,
Apr 6 2017
The CL landed. We only use Play to install now.
,
Apr 7 2017
Anything still to do here?
,
Apr 7 2017
Yes, 1) we need to add "InstallStart" in "WebApk.Install.GooglePlayInstallResult". 2) Record this metrics when the broadcast is received by Chrome, not in the calling of callback of WebApkInstaller. Thus we will have very less chance to miss any record of an Play install.
,
Apr 7 2017
That plan SGTM!
,
Apr 11 2017
,
Apr 11 2017
The total number (banner+menu) in the "WebApk.Install.InstallSource" is actually the "InstallStart" we want. The combination of the "InstallSource" and the "GooglePlayInstallResult" can give us a good understanding of the data that we missed to record. I also found a bug in "GooglePlayInstallResult" which also records data from WebAPK update cases. A CL (https://chrome-internal-review.googlesource.com/c/352289/) is created to fix the bug. We could see what the data shows before making the changes of step 2) in comment#6. |
|||
►
Sign in to add a comment |
|||
Comment 1 by hanxi@chromium.org
, Apr 5 2017