Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(877)

Side by Side Diff: net/http/http_cache_transaction.cc

Issue 232003002: Ignore disk cache for concurrent byte range requests to a single resource, to prevent stalling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check for range requests rather than CouldBeSparse() Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_cache_transaction.h" 5 #include "net/http/http_cache_transaction.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #if defined(OS_POSIX) 9 #if defined(OS_POSIX)
10 #include <unistd.h> 10 #include <unistd.h>
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 // Downgrade to UPDATE if the request has been externally conditionalized. 836 // Downgrade to UPDATE if the request has been externally conditionalized.
837 if (external_validation_.initialized) { 837 if (external_validation_.initialized) {
838 if (mode_ & WRITE) { 838 if (mode_ & WRITE) {
839 // Strip off the READ_DATA bit (and maybe add back a READ_META bit 839 // Strip off the READ_DATA bit (and maybe add back a READ_META bit
840 // in case READ was off). 840 // in case READ was off).
841 mode_ = UPDATE; 841 mode_ = UPDATE;
842 } else { 842 } else {
843 mode_ = NONE; 843 mode_ = NONE;
844 } 844 }
845 } 845 }
846
847 // If we're already writing to an active entry with this key and it is
848 // a range request, we want to switch to pass-through mode. This
849 // eliminates a long-running issue (crbug.com/31014) where two of the same
850 // video resource could not be played back simultaneously due to one locking
851 // the cache entry until the entire video was downloaded.
852 //
853 // This is not an ideal solution, as we are now ignoring the cache entirely
854 // for all range requests to a resource beyond the first. This is however a
855 // much more succinct solution than the alternatives, which would require
856 // somewhat significant changes to the http caching logic.
857 // TODO(rileya): Support simultaneous transactions on sparse cache entries,
858 // and remove this hack.
scherkus (not reviewing) 2014/04/10 18:26:06 if the plan is to close the original bug, then I'd
rileya (GONE FROM CHROMIUM) 2014/04/10 19:24:51 Sounds good, filed crbug.com/362215.
859 if (ActiveEntry* entry = cache_->FindActiveEntry(cache_key_)) {
860 if (partial_ && entry->writer && entry->writer->range_requested_)
861 mode_ = NONE;
862 }
846 } 863 }
847 864
848 // Use PUT and DELETE only to invalidate existing stored entries. 865 // Use PUT and DELETE only to invalidate existing stored entries.
849 if ((request_->method == "PUT" || request_->method == "DELETE") && 866 if ((request_->method == "PUT" || request_->method == "DELETE") &&
850 mode_ != READ_WRITE && mode_ != WRITE) { 867 mode_ != READ_WRITE && mode_ != WRITE) {
851 mode_ = NONE; 868 mode_ = NONE;
852 } 869 }
853 870
854 // If must use cache, then we must fail. This can happen for back/forward 871 // If must use cache, then we must fail. This can happen for back/forward
855 // navigations to a page generated via a form post. 872 // navigations to a page generated via a form post.
(...skipping 1664 matching lines...) Expand 10 before | Expand all | Expand 10 after
2520 default: 2537 default:
2521 NOTREACHED(); 2538 NOTREACHED();
2522 } 2539 }
2523 } 2540 }
2524 2541
2525 void HttpCache::Transaction::OnIOComplete(int result) { 2542 void HttpCache::Transaction::OnIOComplete(int result) {
2526 DoLoop(result); 2543 DoLoop(result);
2527 } 2544 }
2528 2545
2529 } // namespace net 2546 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698