From 1e30c0702e58a5dd0229b8c66f837c4138c195b1 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 11:13:45 +0100 Subject: [PATCH 1/6] add indexes sooner in the migration process to speed it up #4535 --- db/migrations/0215__content_structure.sql | 3 +++ db/migrations/0219__attachments.sql | 2 ++ 2 files changed, 5 insertions(+) diff --git a/db/migrations/0215__content_structure.sql b/db/migrations/0215__content_structure.sql index 9f599cec3..f8c6a461f 100644 --- a/db/migrations/0215__content_structure.sql +++ b/db/migrations/0215__content_structure.sql @@ -8,3 +8,6 @@ CREATE TABLE IF NOT EXISTS "blobs" ( ALTER TABLE notes ADD blobId TEXT DEFAULT NULL; ALTER TABLE note_revisions ADD blobId TEXT DEFAULT NULL; + +CREATE INDEX IF NOT EXISTS IDX_notes_blobId on notes (blobId); +CREATE INDEX IF NOT EXISTS IDX_revisions_blobId on revisions (blobId); diff --git a/db/migrations/0219__attachments.sql b/db/migrations/0219__attachments.sql index 5e7c93e96..246360bfe 100644 --- a/db/migrations/0219__attachments.sql +++ b/db/migrations/0219__attachments.sql @@ -19,3 +19,5 @@ CREATE INDEX IDX_attachments_ownerId_role CREATE INDEX IDX_attachments_utcDateScheduledForErasureSince on attachments (utcDateScheduledForErasureSince); + +CREATE INDEX IF NOT EXISTS IDX_attachments_blobId on attachments (blobId); From 807941e6a50759666f2cd8fc413dc3ad6a9249b8 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 20:50:38 +0100 Subject: [PATCH 2/6] disable scanning for links while migration is running #4535 --- src/services/cls.js | 12 +++++++++++- src/services/migration.js | 4 ++++ src/services/notes.js | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/services/cls.js b/src/services/cls.js index 0bfde4436..8e2c2870c 100644 --- a/src/services/cls.js +++ b/src/services/cls.js @@ -48,6 +48,14 @@ function isEntityEventsDisabled() { return !!namespace.get('disableEntityEvents'); } +function setMigrationRunning(running) { + namespace.set('migrationRunning', !!running); +} + +function isMigrationRunning() { + return !!namespace.get('migrationRunning'); +} + function disableSlowQueryLogging(disable) { namespace.set('disableSlowQueryLogging', disable); } @@ -102,5 +110,7 @@ module.exports = { putEntityChange, ignoreEntityChangeIds, disableSlowQueryLogging, - isSlowQueryLoggingDisabled + isSlowQueryLoggingDisabled, + setMigrationRunning, + isMigrationRunning }; diff --git a/src/services/migration.js b/src/services/migration.js index 58b910d7b..e5ca3dc6c 100644 --- a/src/services/migration.js +++ b/src/services/migration.js @@ -5,6 +5,7 @@ const log = require('./log'); const utils = require('./utils'); const resourceDir = require('./resource_dir'); const appInfo = require('./app_info'); +const cls = require('./cls.js'); async function migrate() { const currentDbVersion = getDbVersion(); @@ -51,6 +52,9 @@ async function migrate() { // all migrations are executed in one transaction - upgrade either succeeds, or the user can stay at the old version // otherwise if half of the migrations succeed, user can't use any version - DB is too "new" for the old app, // and too old for the new app version. + + cls.setMigrationRunning(true); + sql.transactional(() => { for (const mig of migrations) { try { diff --git a/src/services/notes.js b/src/services/notes.js index 04f457f81..93b8313be 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -895,6 +895,11 @@ function scanForLinks(note, content) { * Things which have to be executed after updating content, but asynchronously (separate transaction) */ async function asyncPostProcessContent(note, content) { + if (cls.isMigrationRunning()) { + // this is rarely needed for migrations, but can cause trouble by e.g. triggering downloads + return; + } + if (note.hasStringContent() && !utils.isString(content)) { content = content.toString(); } From 6e33553146f5700993027142a12906d1bd95dc16 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 23:11:27 +0100 Subject: [PATCH 3/6] fix migration --- db/migrations/0215__content_structure.sql | 2 +- db/migrations/0218__rename_note_revision_to_revision.sql | 1 + src/services/migration.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/db/migrations/0215__content_structure.sql b/db/migrations/0215__content_structure.sql index f8c6a461f..da4afcf6b 100644 --- a/db/migrations/0215__content_structure.sql +++ b/db/migrations/0215__content_structure.sql @@ -10,4 +10,4 @@ ALTER TABLE notes ADD blobId TEXT DEFAULT NULL; ALTER TABLE note_revisions ADD blobId TEXT DEFAULT NULL; CREATE INDEX IF NOT EXISTS IDX_notes_blobId on notes (blobId); -CREATE INDEX IF NOT EXISTS IDX_revisions_blobId on revisions (blobId); +CREATE INDEX IF NOT EXISTS IDX_note_revisions_blobId on note_revisions (blobId); diff --git a/db/migrations/0218__rename_note_revision_to_revision.sql b/db/migrations/0218__rename_note_revision_to_revision.sql index 780099872..c67c52393 100644 --- a/db/migrations/0218__rename_note_revision_to_revision.sql +++ b/db/migrations/0218__rename_note_revision_to_revision.sql @@ -21,5 +21,6 @@ CREATE INDEX `IDX_revisions_utcDateCreated` ON `revisions` (`utcDateCreated`); CREATE INDEX `IDX_revisions_utcDateLastEdited` ON `revisions` (`utcDateLastEdited`); CREATE INDEX `IDX_revisions_dateCreated` ON `revisions` (`dateCreated`); CREATE INDEX `IDX_revisions_dateLastEdited` ON `revisions` (`dateLastEdited`); +CREATE INDEX IF NOT EXISTS IDX_revisions_blobId on revisions (blobId); UPDATE entity_changes SET entityName = 'revisions' WHERE entityName = 'note_revisions'; diff --git a/src/services/migration.js b/src/services/migration.js index e5ca3dc6c..4a1f727b0 100644 --- a/src/services/migration.js +++ b/src/services/migration.js @@ -11,7 +11,7 @@ async function migrate() { const currentDbVersion = getDbVersion(); if (currentDbVersion < 214) { - log.error("Direct migration from your current version is not supported. Please upgrade to the latest v0.60.X first and only then to this version."); + log.error("Direct migration from your current version is not supported. Please upgrade to the latest v0.60.4 first and only then to this version."); utils.crash(); return; @@ -19,7 +19,7 @@ async function migrate() { // backup before attempting migration await backupService.backupNow( - // creating a special backup for versions 0.60.X, the changes in 0.61 are major. + // creating a special backup for version 0.60.4, the changes in 0.61 are major. currentDbVersion === 214 ? `before-migration-v060` : 'before-migration' From 47fb96faa81e67b59f7c15c2e3bad088dab47215 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 23:42:57 +0100 Subject: [PATCH 4/6] don't tag beta images with latest #4590 --- .github/workflows/docker.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index c2db4becf..0cff4beee 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -22,6 +22,7 @@ jobs: zadam/trilium ghcr.io/zadam/trilium tags: | + type=raw,value=latest,enable=${{ !endsWith(github.ref, 'beta') }} type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}}-latest type=match,pattern=(\d+.\d+).\d+\-beta,enable=${{ endsWith(github.ref, 'beta') }},group=1,suffix=-latest From 4f8073daa7cff1b8b6737ae45792b2e87c2adf33 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 23:48:56 +0100 Subject: [PATCH 5/6] Revert "don't tag beta images with latest #4590" This reverts commit 47fb96faa81e67b59f7c15c2e3bad088dab47215. --- .github/workflows/docker.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 0cff4beee..c2db4becf 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -22,7 +22,6 @@ jobs: zadam/trilium ghcr.io/zadam/trilium tags: | - type=raw,value=latest,enable=${{ !endsWith(github.ref, 'beta') }} type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}}-latest type=match,pattern=(\d+.\d+).\d+\-beta,enable=${{ endsWith(github.ref, 'beta') }},group=1,suffix=-latest From e76093e75c5bacb4371f5ad9bc5e34d518a3e334 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jan 2024 23:49:23 +0100 Subject: [PATCH 6/6] release 0.62.6 --- package.json | 2 +- src/services/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7a1a01b18..4321d4f48 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "trilium", "productName": "Trilium Notes", "description": "Trilium Notes", - "version": "0.62.5", + "version": "0.62.6", "license": "AGPL-3.0-only", "main": "electron.js", "bin": { diff --git a/src/services/build.js b/src/services/build.js index a1286ec8a..f42c6d8df 100644 --- a/src/services/build.js +++ b/src/services/build.js @@ -1 +1 @@ -module.exports = { buildDate:"2024-01-08T00:05:13+01:00", buildRevision: "ee608fcf46a2052f21d94a8a72fc023dcaf955f7" }; +module.exports = { buildDate:"2024-01-21T23:49:23+01:00", buildRevision: "4f8073daa7cff1b8b6737ae45792b2e87c2adf33" };