Open Bug 1489178 Opened 7 years ago Updated 3 years ago

Tab Store refactor: (1) debounce, (2) stop storing in DB and as serialized file

Categories

(Firefox for iOS :: General, enhancement, P3)

Other
iOS
enhancement

Tracking

()

Tracking Status
fxios + ---

People

(Reporter: garvan, Unassigned)

Details

Tab storage is both database and on-disk (as an archived array of tabs). It is triggered on every page navigation (and various other actions). Page navigations are the highest consumer of system resources; WebKit will highly consume CPU and disk I/O at that time. I see delays introduced in the existing code which I assume are to avoid increased system load during a page navigation. Problems with the existing code: - storing data both in the DB and on disk -- DB I/O API is properly concurrent (and has safety guarantees). Disk I/O needs to be wrapped in additional code to ensure read/write safety. -- duplication of work, unnecessary redundancy (although I suspect they store slightly different data currently) - Disk storage writes the full tab array every time -- DB storage is better for granular updates - lack of debouncing -- there are no protections on how frequently tab storage code is called. Solutions: - store tabs in the DB only - update individual tabs, rather than the full tab list every time - debounce the storage to aggregate calls in close time proximity, and write out the most recent changeset only
Priority: -- → P3
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.