New issue
Advanced search Search tips

Issue 821749 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Bug



Sign in to add a comment

Content suggestions are not loading in poor network

Project Member Reported by rakurati@chromium.org, Mar 14 2018

Issue description

App Version: 67.0.3369.0 Canary
iOS Version: 11.3 beta 5, 10.3.3
Device: iPhone, iPad

Precondition: Connect to Gin-3g/2g network

Steps to reproduce:
1. Fresh install and launch chrome in Gin-2g network
2. Tap location allow popup in NTP 
3. Background the app while content suggestion is loading
4. Open the app
5. Force quit and relaunch app

Observed results:
Notice that no content suggestions are being loaded

Expected results:
Content suggestion should load after force quit

Number of times you were able to reproduce: 3/5 (could be seen more often on 2G) 
Bug reproducible after clean install: Yes
Bug reproducible after clearing cache and cookies: Yes
Bug reproducible on Chrome Mobile on Android: No
Bug reproducible on Safari/Firefox: Firefox: NA, Safari: NA
Bug reproducible on current stable build (App Version, iOS Version): Yes on M65 
Bug reproducible on the current beta channel build (App Version, iOS Version): yes on M66

Link to video/image:
https://drive.google.com/file/d/1oJOxDTqNTiDR_LYMOGd0JVJfuJSQStrR/view?usp=sharing

 

Comment 1 by sczs@chromium.org, Mar 14 2018

Cc: treib@chromium.org
Owner: gambard@chromium.org
Status: Assigned (was: Untriaged)
gambard@ could you PTAL, maybe assign to someone on the Zine team? 

Comment 2 by sczs@chromium.org, Mar 14 2018

Cc: -treib@chromium.org zea@chromium.org
Cc: gambard@chromium.org jkrcal@chromium.org
Owner: zea@chromium.org
I think this is related to the way we fetch suggestions.
Assigning to zea@ as Zine owner, cc jkrcal@ as you wrote the implementation of the scheduler.

Comment 4 by jkrcal@chromium.org, Mar 15 2018

I think the request simply time-outs. I see no way to extend the timeout in URLFetcher, maybe I am wrong? It seems the only solution would be to retry the fetch.

Currently, we never retry a failed request. This is meant as a server protection (so that traffic does not spike in case of server problems). I can imagine making an exception for time-out but I am not sure if it is a good idea.
Labels: zine-triaged OS-Android
Owner: s...@chromium.org
This fell off my radar. Sky, I believe you've looked at our retry logic recently?
Status: Started (was: Assigned)
So far I've been unable to repro. On a M69 local build with GIN-2g. Installing canary now.

For the original instructions, does this repro if you don't perform step #3? Watching the video, it seems the NTP spinner stops when the app is opened in #4. But watching the time in the video, there seems to have been only ~7 seconds between when the fetch should have started and completed. That's not long enough to get hit with timeouts. It isn't clear to me why the fetch failed. 

I feel like #5 is working as intended, we do not currently issue retries for NTP content on failure. Even when Chrome is restarted. Instead we wait a certain amount of time. And there's a button on the screen the user can press to force the fetch. This stance isn't set in stone, we could change it. But I'm hesitant to do something that's risky for the server's health. If we wanted to special case something, I would target scenarios where we don't have any fallback content, which is part of why this is so noticable.
Well, I didn't realize this was reported on iOS. Trying on an iPhone, I think I was able to repro it when I backgrounded. When I didn't background, then the UI actually switched from spinner -> there's no content here -> shows content. Which sounds like we miss some UI timer (and the UI timer is maybe a different length thank on Android?), but then the ultimate showing happens when the request finishes. But if we background the app, some part of this goes wrong.


Labels: -OS-Android
The UI timeout seems to be 5 seconds, which is inline with what this doc says, https://docs.google.com/document/d/1BCbkOtiiXZ4xU7DfpDp9yfgGi7IQwUA_MQkzUhE_gUE/edit?hl=en# , but I think that's a red herring. It seems that something about backgrounding Chrome (on iOS) is causing the fetch to fail in some way. The fetch has to complete (though not successfully) so that the scheduler can write the fetch attempt time to prefs, so that subsequent fetches will not occur.
Fetches on GIN-2g seem to take 7-10 seconds as a point of reference.

Sign in to add a comment