Replace startup with attachment background migration
Iterates through `Message::id` index.
This commit is contained in:
parent
c853d1bccd
commit
77b1f3c505
3 changed files with 22 additions and 19 deletions
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -237,7 +237,10 @@ const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
|
|||
await settings.deleteAttachmentMigrationLastProcessedIndex(connection);
|
||||
}
|
||||
|
||||
const batchTotalDuration = Date.now() - fetchUnprocessedMessagesStartTime;
|
||||
|
||||
return {
|
||||
batchTotalDuration,
|
||||
done,
|
||||
fetchDuration,
|
||||
lastProcessedIndex,
|
||||
|
|
Loading…
Reference in a new issue