Open Bug 1489178 Opened 6 years ago Updated 2 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.