Daniel Gasienica
7413b787b6
Make migrations
private
2018-04-02 18:54:28 -04:00
Daniel Gasienica
b07c66eaa7
Generate attachments from local files
...
This ensures our benchmarking is closer to real-world usage, e.g. images, video,
etc. that are not compressible.
2018-04-02 17:58:37 -04:00
Daniel Gasienica
4a664bdab8
Add public domain files for generating test data
2018-04-02 17:42:05 -04:00
Daniel Gasienica
064a40544c
Fix error message formatting
2018-04-02 17:42:04 -04:00
Daniel Gasienica
442f5d7295
Use done
to match JavaScript iterators
...
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
2018-04-02 17:42:04 -04:00
Daniel Gasienica
a4f0c5242f
Document why batch size is one
2018-04-02 17:42:04 -04:00
Daniel Gasienica
d59fdddb43
Improve storage.fetch
error message
2018-04-02 17:42:04 -04:00
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.
2018-04-02 17:42:04 -04:00
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`.
2018-04-02 17:33:32 -04:00
Daniel Gasienica
bfbeedab5c
Temporarily disable post-attachment migration migrations
2018-04-02 15:26:24 -04:00
Daniel Gasienica
d9be6a0f94
Destructure Lodash require
s
2018-04-02 15:12:04 -04:00
Daniel Gasienica
b7b6195cfc
Extract IIFE into separate function
2018-04-02 12:17:36 -04:00
Daniel Gasienica
11f98474ba
Capture how many messages we have to process
2018-04-02 12:17:36 -04:00
Daniel Gasienica
0fdc1140dd
Add Database.getCount
function
2018-04-02 12:17:36 -04:00
Daniel Gasienica
1f8556b049
Remove unused createCollection
2018-04-02 12:17:36 -04:00
Daniel Gasienica
c67c2a858a
Remove Backbone references for attachment migration
...
It has to run without any other migrations interfering.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
77f8f598de
Add disk-usage.sh
script for testing
2018-04-02 12:17:36 -04:00
Daniel Gasienica
0c40f35623
Document disadvantage of fetching messages without index
2018-04-02 12:17:36 -04:00
Daniel Gasienica
a4ecf1a9d6
Define constant after creating idle detector
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d3c9de4712
Add debug module
...
Lets us generate large conversations with large attachments.
2018-04-02 12:17:36 -04:00
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
2018-04-02 12:17:36 -04:00
Daniel Gasienica
ce8fd3d847
Expose Signal.Settings
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
02354ce655
Expose Signal.Database
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
21147a20a0
Add sleep
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
08f73b8420
Remove last processed index after attachment migration
2018-04-02 12:17:36 -04:00
Daniel Gasienica
696a144ab7
Add settings.deleteItem
2018-04-02 12:17:36 -04:00
Daniel Gasienica
a18e462817
Move migrations to Signal.Migrations
2018-04-02 12:17:36 -04:00
Daniel Gasienica
5910f84af4
Remove outdated documentation
2018-04-02 12:17:36 -04:00
Daniel Gasienica
efe3cd67fc
Allow attachment migration run on higher database version
2018-04-02 12:17:36 -04:00
Daniel Gasienica
921c3dba7c
Skip migrations that have already been applied
2018-04-02 12:17:36 -04:00
Daniel Gasienica
417511ffd2
Add database.getVersion
2018-04-02 12:17:36 -04:00
Daniel Gasienica
c5c94bc3ab
Extract getMigrationVersions
2018-04-02 12:17:36 -04:00
Daniel Gasienica
6aea36240d
Rename closeDatabase
to closeDatabaseConnection
2018-04-02 12:17:36 -04:00
Daniel Gasienica
016432826b
Extract database
and settings
modules
2018-04-02 12:17:36 -04:00
Daniel Gasienica
5bea894abd
Close database connection via Backbone IDB adapter
2018-04-02 12:17:36 -04:00
Daniel Gasienica
f50e9ae364
Log closing connection of database
2018-04-02 12:17:36 -04:00
Daniel Gasienica
4ff8bc3357
Use camelCase
for non-constructors
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3720c3f3bb
Improve log message
2018-04-02 12:17:36 -04:00
Daniel Gasienica
ce5b450fdb
Log targetSchemaVersion
2018-04-02 12:17:36 -04:00
Daniel Gasienica
f7f24b5822
Log total number of processed messages
2018-04-02 12:17:36 -04:00
Daniel Gasienica
eca930770c
Remove hard-coded database connection settings
2018-04-02 12:17:36 -04:00
Daniel Gasienica
1df6dc8378
Abort processing if there are no more messages
2018-04-02 12:17:36 -04:00
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.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d5d0eabdfd
Remove usage of storage
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
8966e80284
Improve identifier names
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3e2d575506
Document MessageDataMigrator
module design
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3c57dbfb56
Extract NUM_MESSAGES_PER_BATCH
2018-04-02 12:17:36 -04:00
Daniel Gasienica
85788d3c4a
Match items
storage format to Backbone adapter
2018-04-02 12:17:36 -04:00
Daniel Gasienica
7de7fcf561
Avoid no-param-reassign
violation
2018-04-02 12:17:36 -04:00
Daniel Gasienica
070235b59b
Implement MessageDataMigrator.processAll
...
Upgrades schema of all messags upon startup.
2018-04-02 12:17:36 -04:00