• David Munro's avatar
    crostini: Timeouts for every step · d5b7ee52
    David Munro authored
    NEVER_FINISHED is one of the larger (and growing :'( ) error buckets.
    Add timeouts to every step to ensure that hangs are caught, turned into
    errors for the right state, and the user has a chance to retry.
    
    To get there we:
    1. Add some timeouts, initially set to quite generous values which we'll
       tighten in future CLs. We have crosbolt data, but would like some
       real-world timings before getting stricter.
    2. Add a metric tracking the time  spent in each step, to give us a
       real-world breakdown to supplement what we have in crosbolt
    3. Add a metric tracking how often we see invalid transitions. In theory
       a slow operation could send its response during the next restart
       attempt, and since there's no validation on the state transitions
       we'd end up in a weird state with unknown effects. There are options
       with varying thoroughness (and corresponding cost) to address this,
       but first let's see if it's actually a problem. This could already
       happen (though we haven't had reports) and there are some mitigations
       in place already so it may be a non-issue.
    
    Bug: 1142319
    Test: Unit tests, mannually run installation + app launch.
    Change-Id: Iafd15cf8f659b9a29764ce399359a29711e35043
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2563042
    Commit-Queue: David Munro <davidmunro@google.com>
    Reviewed-by: default avatarMark Pearson <mpearson@chromium.org>
    Reviewed-by: default avatarRyo Hashimoto <hashimoto@chromium.org>
    Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
    Reviewed-by: default avatarMichael Lippautz <mlippautz@chromium.org>
    Reviewed-by: default avatarNicholas Verne <nverne@chromium.org>
    Reviewed-by: default avatarFergus Dall <sidereal@google.com>
    Cr-Commit-Position: refs/heads/master@{#836505}
    d5b7ee52
fake_cicerone_client.h 21.8 KB