Chrome not freeing up HDD space after offline content deletion
See original GitHub issueHave you read the FAQ and checked for duplicate open issues?: yes
What version of Shaka Player are you using?: 2.4.3
Can you reproduce the issue with our latest release version?: yes
Can you reproduce the issue with the latest code from master?:
yes
Are you using the demo app or your own custom app?: custom app (electron)
If custom app, can you reproduce the issue using our demo app?: yes
What browser and OS are you using?: MacOS / Windows
What are the manifest and license server URIs?: any manifest
What did you do?
- Download one or multiple offline manifest
- Clear/Delete the files (using shakaplayer code, not by clearing the db manually)
What did you expect to happen? The available HDD space of the indexeddb to be reclaimed
What actually happened? The available HDD space of the removed manifest of indexeddb are not reclaimed, chrome (chromium) is not compressing the LevelDB files on disk, as a result the references are removed in Indexeddb (and seemingly removed) however they still taking up space on the HDD.
Downloading a new manifest sub-sequential seems to trigger a db compress action, however still not clearing all the previous data (just reducing the size with small chunks). This will lead to a situation where a users HDD is full and/or indexeddb quota is reached.
Technically this seems to be a bug in both webkit / chrome https://bugs.chromium.org/p/chromium/issues/detail?id=488851 https://bugs.webkit.org/show_bug.cgi?id=178204
However it would be interesting to review if there are workarounds to enforce/manually trigger a leveldb compression action after a manifest deletion
Issue Analytics
- State:
- Created 5 years ago
- Comments:10 (5 by maintainers)

Top Related StackOverflow Question
As far as we know, there’s no API for that. The browser should do it automatically, but there’s a bug in Chrome preventing it from working correctly.
We already allow someone to implement their own storage mechanism. With that you should be able to plug-in an alternative back-end to store the content.