Bug 148137

Summary: WebKit may keep outdated entry in the disk cache after a reload
Product: WebKit Reporter: Chris Dumez <cdumez>
Component: Page LoadingAssignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: ap, barraclough, cgarcia, commit-queue, koivisto, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=148205
Attachments:
Description Flags
Patch
none
Patch none

Description Chris Dumez 2015-08-18 13:50:20 PDT
WebKit may keep outdated entry in the disk cache after a reload in the following scenario:
1. We have an entry in the cache
2. The user reloads
3. We get a fresh resource from the network but this one is not cacheable

In this case, we should probably remove the cached entry to make it doesn't get used in the future.
Comment 1 Chris Dumez 2015-08-18 13:50:50 PDT
rdar://problem/22299547
Comment 2 Chris Dumez 2015-08-18 16:43:24 PDT
Created attachment 259320 [details]
Patch
Comment 3 Antti Koivisto 2015-08-19 07:06:18 PDT
Comment on attachment 259320 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259320&action=review

r=me

> Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:519
>      // For simplicity we also don't reduce m_approximateSize on removals.
>      // The next synchronization will update everything.
>  
> +    removeFromPendingWriteOperations(key);
> +
>      serialBackgroundIOQueue().dispatch([this, key] {

You should also add bloom filter check here. Otherwise every non-cacheable resource generates disk I/O.
Comment 4 Chris Dumez 2015-08-19 09:04:58 PDT
Created attachment 259373 [details]
Patch
Comment 5 WebKit Commit Bot 2015-08-19 09:50:59 PDT
Comment on attachment 259373 [details]
Patch

Clearing flags on attachment: 259373

Committed r188640: <http://trac.webkit.org/changeset/188640>
Comment 6 WebKit Commit Bot 2015-08-19 09:51:06 PDT
All reviewed patches have been landed.  Closing bug.