diff options
author | sorin <sorin@chromium.org> | 2015-11-11 11:35:35 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-11 19:36:35 +0000 |
commit | 5081941b99d37952e1c60c9cb24257369d9c6416 (patch) | |
tree | 9a1a65bb4e12e3c40c46a8bc7f011e44246dcfb4 /extensions/browser/updater | |
parent | 5001e48419392e97fce8ec2ab0872d7f80748ed1 (diff) | |
download | chromium_src-5081941b99d37952e1c60c9cb24257369d9c6416.zip chromium_src-5081941b99d37952e1c60c9cb24257369d9c6416.tar.gz chromium_src-5081941b99d37952e1c60c9cb24257369d9c6416.tar.bz2 |
Change the update_client task runner behavior to continue on shutdown.
Historically, we've had issues with running the BITS COM client on
threads and interfering with the browser shutdown.
For reason not entirely understood, some out of process COM calls,
and most common the call to enumerate BITS jobs appear to hang and
consequently trigger the browser hang shutdown detector.
At first, we had run this code on the FILE thread, then we had moved
it on blocking pool threads. However, the net effect is that the
hang moved as well.
This change avoids blocking the shutdown by allowing the code to
run after the browser shutdown until the OS terminates the thread as
part of the process exit.
While it is somehow difficult to reason about the correctness of
the update_client code, this change is reasonably safe to make
due to aspects of refcounting and containment of the update_client
such as not accessing browser global state and refcounting the
objects that are thread aware.
BUG=552028
Review URL: https://codereview.chromium.org/1415933011
Cr-Commit-Position: refs/heads/master@{#359138}
Diffstat (limited to 'extensions/browser/updater')
-rw-r--r-- | extensions/browser/updater/update_service_unittest.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/extensions/browser/updater/update_service_unittest.cc b/extensions/browser/updater/update_service_unittest.cc index f570303..fe2aefe 100644 --- a/extensions/browser/updater/update_service_unittest.cc +++ b/extensions/browser/updater/update_service_unittest.cc @@ -46,6 +46,7 @@ class FakeUpdateClient : public update_client::UpdateClient { return false; } bool IsUpdating(const std::string& id) const override { return false; } + void Stop() override {} protected: friend class base::RefCounted<FakeUpdateClient>; |