Commit Graph

3533 Commits (a4f0c5242f9476d411002c75f902c702c5fd1fa9)
 

Author SHA1 Message Date
Daniel Gasienica a4f0c5242f Document why batch size is one 7 years ago
Daniel Gasienica d59fdddb43 Improve `storage.fetch` error message 7 years ago
Daniel Gasienica 805031ade8 Conditionally run post-attachment migrations
Introduce placeholder migrations for Backbone models so they never implicitly
run migrations whenever they are `fetch`ed. We prefer to run our migrations
explicitly upon app startup and then let Backbone models be (slightly) dumb(er)
models, without inadvertently triggering migrations.
7 years ago
Daniel Gasienica 887bd83852
Migrate attachments on startup (#2193)
- [x] Run initial Backbone migrations 12–17 upon startup.
- [x] ~~Run attachment migration (without Backbone references to avoid
      migrations): `MessageDataMigrator.processAll`.~~ Disabled in favor of
      background processing without index.
- [x] ~~Run new migrations that can cover entire database (18+).~~
      Not until we have such migrations.
- [x] Add `runMigrations` module that ensures migrations are only run once.
- [x] Add `settings` (`Signal.Settings`) module to interact with our app
      settings (`items` store) using a domain API, e.g.
      `isAttachmentMigrationComplete(…)` vs
      `storage.get('attachmentMigration_isComplete')`. Required to check
      attachment migration status without using Backbone.
- [x] Add `database` (`Signal.Database`) CommonJS module to provide
      `Promise`-based interface to IndexedDB.
- [x] Add `debug` (`Signal.Debug`) module for generating synthetic data to test
      performance of migration.
- [x] Minor: Add `sleep` module for doing promise based sleeps.
- [x] Minor: Extract `wrapDeferred` as CommonJS module named `deferredToPromise`.
7 years ago
Daniel Gasienica bfbeedab5c Temporarily disable post-attachment migration migrations 7 years ago
Daniel Gasienica d9be6a0f94 Destructure Lodash `require`s 7 years ago
Daniel Gasienica b7b6195cfc Extract IIFE into separate function 7 years ago
Daniel Gasienica 11f98474ba Capture how many messages we have to process 7 years ago
Daniel Gasienica 0fdc1140dd Add `Database.getCount` function 7 years ago
Daniel Gasienica 1f8556b049 Remove unused `createCollection` 7 years ago
Daniel Gasienica c67c2a858a Remove Backbone references for attachment migration
It has to run without any other migrations interfering.
7 years ago
Daniel Gasienica 77f8f598de Add `disk-usage.sh` script for testing 7 years ago
Daniel Gasienica 0c40f35623 Document disadvantage of fetching messages without index 7 years ago
Daniel Gasienica a4ecf1a9d6 Define constant after creating idle detector 7 years ago
Daniel Gasienica d3c9de4712 Add debug module
Lets us generate large conversations with large attachments.
7 years ago
Daniel Gasienica 30037e5308 Reduce attachment migration batch size to 1
This prevents ‘Maximum IPC message size exceeded’ due to IDB `getAll` operation.

- https://github.com/zincbase/zincdb/issues/17
- https://cs.chromium.org/chromium/src/content/browser/indexed_db/indexed_db_database.cc?q=%22Maximum+IPC+message+size+exceeded%22&sq=package:chromium&l=1160
7 years ago
Daniel Gasienica ce8fd3d847 Expose `Signal.Settings` module 7 years ago
Daniel Gasienica 02354ce655 Expose `Signal.Database` module 7 years ago
Daniel Gasienica 21147a20a0 Add `sleep` module 7 years ago
Daniel Gasienica 08f73b8420 Remove last processed index after attachment migration 7 years ago
Daniel Gasienica 696a144ab7 Add `settings.deleteItem` 7 years ago
Daniel Gasienica a18e462817 Move migrations to `Signal.Migrations` 7 years ago
Daniel Gasienica 5910f84af4 Remove outdated documentation 7 years ago
Daniel Gasienica efe3cd67fc Allow attachment migration run on higher database version 7 years ago
Daniel Gasienica 921c3dba7c Skip migrations that have already been applied 7 years ago
Daniel Gasienica 417511ffd2 Add `database.getVersion` 7 years ago
Daniel Gasienica c5c94bc3ab Extract `getMigrationVersions` 7 years ago
Daniel Gasienica 6aea36240d Rename `closeDatabase` to `closeDatabaseConnection` 7 years ago
Daniel Gasienica 016432826b Extract `database` and `settings` modules 7 years ago
Daniel Gasienica 5bea894abd Close database connection via Backbone IDB adapter 7 years ago
Daniel Gasienica f50e9ae364 Log closing connection of database 7 years ago
Daniel Gasienica 4ff8bc3357 Use `camelCase` for non-constructors 7 years ago
Daniel Gasienica 3720c3f3bb Improve log message 7 years ago
Daniel Gasienica ce5b450fdb Log `targetSchemaVersion` 7 years ago
Daniel Gasienica f7f24b5822 Log total number of processed messages 7 years ago
Daniel Gasienica eca930770c Remove hard-coded database connection settings 7 years ago
Daniel Gasienica 1df6dc8378 Abort processing if there are no more messages 7 years ago
Daniel Gasienica 85490fbc98 Disable JSHint for `background.js`
It doesn’t recognize `async` and I couldn’t figure out how to ignore a top-level
`async` without cascading errors.
7 years ago
Daniel Gasienica d5d0eabdfd Remove usage of `storage` module 7 years ago
Daniel Gasienica 8966e80284 Improve identifier names 7 years ago
Daniel Gasienica 3e2d575506 Document `MessageDataMigrator` module design 7 years ago
Daniel Gasienica 3c57dbfb56 Extract `NUM_MESSAGES_PER_BATCH` 7 years ago
Daniel Gasienica 85788d3c4a Match `items` storage format to Backbone adapter 7 years ago
Daniel Gasienica 7de7fcf561 Avoid `no-param-reassign` violation 7 years ago
Daniel Gasienica 070235b59b Implement `MessageDataMigrator.processAll`
Upgrades schema of all messags upon startup.
7 years ago
Daniel Gasienica b8a0bc3423 Run attachment to disk migration on startup 7 years ago
Daniel Gasienica 178a3cc262 Reduce work for verifying transaction completion 7 years ago
Daniel Gasienica b6e978f74c Implement `MessagesDataMigrator.processAll` 7 years ago
Daniel Gasienica 457bf7ab9d Add `createCollection` function 7 years ago
Daniel Gasienica 8ea257ad4d Use double quotes for identifiers in error messages 7 years ago