QuotaManager storage v4
Categories
(Core :: Storage: Quota Manager, enhancement, P3)
Tracking
()
People
(Reporter: janv, Unassigned)
References
(Blocks 16 open bugs)
Details
Attachments
(1 file)
After more thinking about storage initialization failures and unknown stuff in /storage, I've come to a conclusion that we should get rid of directory traversals for good. We should keep a list of origins and their mapping to directories on disk in a database. Consistency between the database and stuff on disk would be ensured by marker files. Client directories and stuff in some client directories would be managed the same way.
This would solve many problems (including very long file names) and it would open the door for new functionality and optimizations (like getting rid of .metadata-v2 and origin parser, replace flat repository directory structure with multi level repository directory structure).
We wouldn't have to worry about unknown stuff and performance wouldn't be badly affected by too many unknown files that need to be checked during storage initialization.
Reporter | ||
Comment 1•5 years ago
|
||
The new functionality would include for example better support for private browsing and buckets.
Reporter | ||
Comment 2•5 years ago
|
||
(In reply to Jan Varga [:janv] from comment #1)
The new functionality would include for example better support for private browsing and buckets.
and new SessionStorage (for Fission) which needs to support multiple origin directories on disk for the same origin
Updated•5 years ago
|
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Comment 3•5 years ago
•
|
||
I originally thought that everything would follow this schema:
<profile>/storage2/
UUID1/
UUID2/
UUID3/
However, asuth suggested that it might be good to have a special case for private browsing:
<profile>/storage2/
UUID1/
UUID2/
UUID3/
<profile>/storage2/pb/
UUID4/
UUID5/
UUID6/
This way, it would be easy to delete private browsing data without loading mappings from storage.sqlite. This can be especially useful when we implement a separate daemon for deleting private browsing data that would be launched after Firefox shutdown.
Reporter | ||
Comment 4•5 years ago
|
||
Actually the final layout would be a bit different, we need multilevel structure like:
<profile>/storage2/00/
UUID1
UUID2
UUID3
<profile>/storage2/01/
UUID4
UUID5
UUID6
<profile>/storage2/02/
UUID7
UUID8
UUID9
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Comment 5•5 years ago
|
||
Bumping this to v4 since we can't use v3 because we already used v3 in the past (and then downgraded to 2.1).
Reporter | ||
Comment 6•5 years ago
|
||
Reporter | ||
Comment 7•5 years ago
|
||
It seems there will only be multiple patches.
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Comment 8•5 years ago
|
||
The dependency was messy, so I cleaned it up a bit. In general, the main meta bug for addressing storage initialization failures is bug 1482662.
This bug is about QuotaManager storage v4 which is a sub project of bug 1482662.
Reporter | ||
Updated•5 years ago
|
Updated•5 years ago
|
Reporter | ||
Comment 9•4 years ago
|
||
We are now focusing on asynchronous storage initialization instead, bug 1671932.
QMv4 might be addressed in H2 of 2021.
Updated•2 years ago
|
Description
•