Replace startup with attachment background migration

Iterates through `Message::id` index.
This commit is contained in:
Daniel Gasienica 2018-04-02 19:01:30 -04:00
parent c853d1bccd
commit 77b1f3c505
3 changed files with 22 additions and 19 deletions

View file

@ -86,29 +86,23 @@
console.log('Run migrations on database with attachment data');
await Migrations0DatabaseWithAttachmentData.run({ Backbone });
await MessageDataMigrator.dangerouslyProcessAllWithoutIndex({
databaseName: Migrations0DatabaseWithAttachmentData.getDatabase().name,
minDatabaseVersion: Migrations0DatabaseWithAttachmentData.getDatabase().version,
upgradeMessageSchema,
});
console.log('Storage fetch');
storage.fetch();
const idleDetector = new IdleDetector();
idleDetector.on('idle', async () => {
// const database = Migrations0DatabaseWithAttachmentData.getDatabase();
// const batch = await MessageDataMigrator.processNextBatchWithoutIndex({
// databaseName: database.name,
// minDatabaseVersion: database.version,
// upgradeMessageSchema,
// });
// console.log('Upgrade message schema:', batch);
const database = Migrations0DatabaseWithAttachmentData.getDatabase();
const batch = await MessageDataMigrator.processNextBatchWithoutIndex({
databaseName: database.name,
minDatabaseVersion: database.version,
upgradeMessageSchema,
});
console.log('Upgrade message schema:', batch);
// if (batch.done) {
// idleDetector.stop();
// }
if (batch.done) {
idleDetector.stop();
}
});
/* eslint-disable */

View file

@ -3,8 +3,8 @@
const EventEmitter = require('events');
const POLL_INTERVAL_MS = 30 * 1000;
const IDLE_THRESHOLD_MS = 25;
const POLL_INTERVAL_MS = 15 * 1000;
const IDLE_THRESHOLD_MS = 20;
class IdleDetector extends EventEmitter {
constructor() {
@ -14,10 +14,16 @@ class IdleDetector extends EventEmitter {
}
start() {
console.log('Start idle detector');
this._scheduleNextCallback();
}
stop() {
console.log('Stop idle detector');
this._clearScheduledCallbacks();
}
_clearScheduledCallbacks() {
if (this.handle) {
cancelIdleCallback(this.handle);
}
@ -28,7 +34,7 @@ class IdleDetector extends EventEmitter {
}
_scheduleNextCallback() {
this.stop();
this._clearScheduledCallbacks();
this.handle = window.requestIdleCallback((deadline) => {
const { didTimeout } = deadline;
const timeRemaining = deadline.timeRemaining();

View file

@ -237,7 +237,10 @@ const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
await settings.deleteAttachmentMigrationLastProcessedIndex(connection);
}
const batchTotalDuration = Date.now() - fetchUnprocessedMessagesStartTime;
return {
batchTotalDuration,
done,
fetchDuration,
lastProcessedIndex,