We have received some reports about spontaneous loss of collection and history data in Session Buddy. This post outlines what we know about this issue, what you can do to protect yourself, and our plans to address the problem.

Overview

At a high level, the problem stems from the fact that local data is inherently vulnerable. This problem is not unique to Session Buddy v4. Session Buddy v3, although it used a different local storage technology, suffered from this as well. In fact all extensions that store data locally are similarly vulnerable.

While reports involving permanent data loss are statistically rare, it is critical for us to prioritize the pursuit of remedies as any risk to data is unacceptable.

Symptoms

Data loss in Session Buddy may follow or be accompanied by:

  • A browser prompt to “repair” the extension due to corruption. Proceeding with the repair then clears the data Session Buddy stores locally.
  • A blank screen when opening Session Buddy
  • An empty collection or history list
  • IndexedDB errors in the console during startup or operation

Data loss may be limited to either collections or history or in some cases affect all extension data, including settings.

We have not heard of or expect data loss scenarios resulting in the dropping of individual collections or history events.

Causes

The fundamental problem is that Session Buddy data is stored locally and the underlying storage mechanisms are controlled by the browser.

While storing data this way has benefits (privacy, cost, performance, simplicity), it is not as reliable as it should be.

Some factors that jeopardize local data are expected and well-understood, while some are not.

Expected causes

  • Low Disk Space: Browsers may delete local extension data under disk space pressure.
  • System Maintenance: Data can be deleted by system maintenance processes, file restores, or disk cleanup tools.
  • User Actions: Some users have a mistaken (yet reasonable) expectation of data persistence that lead them to uninstall an extension, clear browser data, or run cleaner tools without first backing up extension data.

Unfortunately there is not much an extension can do to prevent deletion in these cases. It can only try to account for it after the fact.

Unexpected Causes

User reports and testimony from other extension developers seem to indicate the presence of data corruption bugs in browsers, browser implementations of IndexedDB, and/or third-party IndexedDB libraries.

Unfortunately there is very little information about these kinds of bugs as they tend to be multivariate and difficult to reproduce.

Some evidence suggests that occurrences of data corruption may be correlated with browser updates, extension updates, power outages, or system crashes but there is no hard data known to us definitively implicating any of these as contributing factors.

Another possible contributing factor may be having Session Buddy open in multiple tabs.

Diagnosis

If you encounter a problem while using Session Buddy (eg, blank screen, empty collection list), do the following:

1. Save Data: Open the Session Buddy console and execute the following command: saveData()

This creates a download file of all collections and history.

Open this file in a text editor and check that collection and history data is present. If “collections” or “events” is null, it means there’s a problem accessing the corresponding data store.

2. Save Diagnostics: In the console, execute the following command: saveDiagnostics()

This creates a download file with information that can be used for troubleshooting.

Send this file to support@sessionbuddy.com along with a description of what happened and any errors presented in the console.

3. Restart the Browser: In some cases the browser may recover from data access issues. Restart the browser to see if that resolves the problem. If not, try restarting your device.

Solutions

Workarounds for Data Corruption Bugs

There may be precautions that Session Buddy can take to avoid triggering data corruption bugs.

This kind of solution requires more information to identify contributing patterns. We will continue to research and monitor development resources and Chromium issues and investigate measures as new information comes to light. We will also continue to expand our test suite in pursuit of conditions that reliably produce data failures.

Finally, we’ll continue to analyze diagnostics as they’re shared by impacted users. This kind of data can be extremely useful for identifying failure patterns but it will take some time to accrue a suitable sample size since incidence rates are low and few reporters include this detail.

User Backups

Users can protect themselves by including Session Buddy data folders in scheduled system backups and/or regularly manually backing up Session Buddy data as explained here.

This is, however, not an ideal or convenient solution for most folks.

Education

We’ve posted about data risks and safeguards in the Session Buddy user forum, but we may need to take more proactive measures to educate users about this topic, possibly via app notifications.

We have plans to add a notification for when data usage is approaching quota to alert users of increased risk of data eviction so they can take appropriate steps like exporting a backup or deleting old collections and history.

Local Redundancy

A local data redundancy strategy may help compensate for some data corruption scenarios.

Implementation options are limited to either more IndexedDB database instances or use of the origin private file system (depending on browser support).

This would be a partial solution since redundant data would still be subject to browser control (and therefore things like quota restrictions, users and tools clearing site data, and browser bugs).

Such a solution also adds complexity and has the potential to exacerbate the problem by contributing to local storage usage leading to eviction.

We are exploring the viability of a local redundancy solution that can be implemented in the immediate term.

Cloud Storage

Cloud storage (either complementing or in lieu of local storage) is the ultimate solution to eliminating the risks related to storing data locally.

We are currently developing a cloud offering that, in addition to data reliability, introduces benefits such as data synch across browser profiles and access to collections from mobile devices and public browsers.

Since cloud resources incur costs, this will be a subscription-based feature.

An initial low-cost version of this is being considered to provide data protection through simple automated cloud backup that can be easily restored if needed.