From df5951ce4628c9ad5cfc7fc8b6a53a67ef71d3cd Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Nov 2023 00:02:31 +0100 Subject: [PATCH 1/7] improve sync debug info --- src/services/sync.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/services/sync.js b/src/services/sync.js index 031666196..585b7d004 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -292,7 +292,9 @@ async function syncRequest(syncContext, method, requestPath, body) { return response; } -function getEntityChangeRow(entityName, entityId) { +function getEntityChangeRow(entityChange) { + const {entityName, entityId} = entityChange; + if (entityName === 'note_reordering') { return sql.getMap("SELECT branchId, notePosition FROM branches WHERE parentNoteId = ? AND isDeleted = 0", [entityId]); } @@ -300,13 +302,13 @@ function getEntityChangeRow(entityName, entityId) { const primaryKey = entityConstructor.getEntityFromEntityName(entityName).primaryKeyName; if (!primaryKey) { - throw new Error(`Unknown entity '${entityName}'`); + throw new Error(`Unknown entity for entity change ${JSON.stringify(entityChange)}`); } const entityRow = sql.getRow(`SELECT * FROM ${entityName} WHERE ${primaryKey} = ?`, [entityId]); if (!entityRow) { - throw new Error(`Entity ${entityName} '${entityId}' not found.`); + throw new Error(`Cannot find entity for entity change ${JSON.stringify(entityChange)}`); } if (entityName === 'blobs' && entityRow.content !== null) { @@ -332,7 +334,7 @@ function getEntityChangeRecords(entityChanges) { continue; } - const entity = getEntityChangeRow(entityChange.entityName, entityChange.entityId); + const entity = getEntityChangeRow(entityChange); const record = { entityChange, entity }; From 1ebdb0f5e1a5cc1b7f8c36af5e1f750141ab062b Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Nov 2023 00:10:54 +0100 Subject: [PATCH 2/7] emergency disabling of image compression since it appears to make problems in migration to 0.61 --- db/migrations/0220__migrate_images_to_attachments.js | 4 ++++ db/migrations/0227__disable_image_compression.sql | 2 ++ src/services/app_info.js | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrations/0227__disable_image_compression.sql diff --git a/db/migrations/0220__migrate_images_to_attachments.js b/db/migrations/0220__migrate_images_to_attachments.js index 512cb3c2f..1815a5d46 100644 --- a/db/migrations/0220__migrate_images_to_attachments.js +++ b/db/migrations/0220__migrate_images_to_attachments.js @@ -3,8 +3,12 @@ module.exports = () => { const becca = require("../../src/becca/becca"); const cls = require("../../src/services/cls"); const log = require("../../src/services/log"); + const sql = require("../../src/services/sql"); cls.init(() => { + // emergency disabling of image compression since it appears to make problems in migration to 0.61 + sql.execute(`UPDATE options SET value = 'false' WHERE name = 'compressImages'`); + beccaLoader.load(); for (const note of Object.values(becca.notes)) { diff --git a/db/migrations/0227__disable_image_compression.sql b/db/migrations/0227__disable_image_compression.sql new file mode 100644 index 000000000..a5350deff --- /dev/null +++ b/db/migrations/0227__disable_image_compression.sql @@ -0,0 +1,2 @@ +-- emergency disabling of image compression since it appears to make problems in migration to 0.61 +UPDATE options SET value = 'false' WHERE name = 'compressImages'; diff --git a/src/services/app_info.js b/src/services/app_info.js index 98bc9d59b..7f5a7818a 100644 --- a/src/services/app_info.js +++ b/src/services/app_info.js @@ -4,7 +4,7 @@ const build = require('./build'); const packageJson = require('../../package'); const {TRILIUM_DATA_DIR} = require('./data_dir'); -const APP_DB_VERSION = 226; +const APP_DB_VERSION = 227; const SYNC_VERSION = 31; const CLIPPER_PROTOCOL_VERSION = "1.0"; From 803b6df40c8cd991f3e30886431c2f8921d5df29 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Nov 2023 00:16:19 +0100 Subject: [PATCH 3/7] release 0.61.12 --- package.json | 2 +- src/services/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c295ddf1e..fcd594732 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "trilium", "productName": "Trilium Notes", "description": "Trilium Notes", - "version": "0.61.11", + "version": "0.61.12", "license": "AGPL-3.0-only", "main": "electron.js", "bin": { diff --git a/src/services/build.js b/src/services/build.js index 0b00c7049..dbe8d2a3e 100644 --- a/src/services/build.js +++ b/src/services/build.js @@ -1 +1 @@ -module.exports = { buildDate:"2023-11-03T11:46:53+01:00", buildRevision: "01093d05d7ca1ede0c9af3fe2f5b04969ade816d" }; +module.exports = { buildDate:"2023-11-04T00:16:19+01:00", buildRevision: "1ebdb0f5e1a5cc1b7f8c36af5e1f750141ab062b" }; From ab4e83771c20eaeaf822e5ff8b2098e8f712f82d Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Nov 2023 22:53:09 +0100 Subject: [PATCH 4/7] fix throwing empty error --- src/public/app/services/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/app/services/server.js b/src/public/app/services/server.js index 48dece334..b8a1d29fb 100644 --- a/src/public/app/services/server.js +++ b/src/public/app/services/server.js @@ -172,7 +172,7 @@ if (utils.isElectron()) { await reportError(arg.method, arg.url, arg.statusCode, arg.body); } - idToRequestMap[arg.requestId].reject(); + idToRequestMap[arg.requestId].reject(new Error(`Server responded with ${arg.statusCode}`)); } delete idToRequestMap[arg.requestId]; From e0d4766c2dc2243729c4bda83576eb5d6c5e8345 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 5 Nov 2023 21:50:08 +0100 Subject: [PATCH 5/7] fix recursion in the inline image processing --- src/services/image.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/services/image.js b/src/services/image.js index de71493f3..111a77771 100644 --- a/src/services/image.js +++ b/src/services/image.js @@ -148,8 +148,16 @@ function saveImageToAttachment(noteId, uploadBuffer, originalName, shrinkImageSw title: fileName }); - const noteService = require("../services/notes"); - noteService.asyncPostProcessContent(note, note.getContent()); // to mark an unused attachment for deletion + // TODO: this is a quick-fix solution of a recursive bug - this is called from asyncPostProcessContent() + // find some async way to do this - perhaps some global timeout with a Set of noteIds needing one more + // run of asyncPostProcessContent + setTimeout(() => { + sql.transactional(() => { + const note = becca.getNoteOrThrow(noteId); + const noteService = require("../services/notes"); + noteService.asyncPostProcessContent(note, note.getContent()); // to mark an unused attachment for deletion + }); + }, 5000); // resizing images asynchronously since JIMP does not support sync operation processImage(uploadBuffer, originalName, shrinkImageSwitch).then(({buffer, imageFormat}) => { From 531e9d4aff47b7e8332420645546d25ab28acf85 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 6 Nov 2023 00:15:35 +0100 Subject: [PATCH 6/7] graceful handling of sync error --- src/services/sync.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/services/sync.js b/src/services/sync.js index 585b7d004..ad59f77be 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -308,7 +308,8 @@ function getEntityChangeRow(entityChange) { const entityRow = sql.getRow(`SELECT * FROM ${entityName} WHERE ${primaryKey} = ?`, [entityId]); if (!entityRow) { - throw new Error(`Cannot find entity for entity change ${JSON.stringify(entityChange)}`); + log.error(`Cannot find entity for entity change ${JSON.stringify(entityChange)}`); + return null; } if (entityName === 'blobs' && entityRow.content !== null) { @@ -335,6 +336,9 @@ function getEntityChangeRecords(entityChanges) { } const entity = getEntityChangeRow(entityChange); + if (!entity) { + continue; + } const record = { entityChange, entity }; From 7fc1eb5262a10459a3b8d21a6bc0b0bfec1318e1 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 6 Nov 2023 00:21:41 +0100 Subject: [PATCH 7/7] release 0.61.13 --- package.json | 2 +- src/services/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fcd594732..3231defaf 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "trilium", "productName": "Trilium Notes", "description": "Trilium Notes", - "version": "0.61.12", + "version": "0.61.13", "license": "AGPL-3.0-only", "main": "electron.js", "bin": { diff --git a/src/services/build.js b/src/services/build.js index dbe8d2a3e..bf62de945 100644 --- a/src/services/build.js +++ b/src/services/build.js @@ -1 +1 @@ -module.exports = { buildDate:"2023-11-04T00:16:19+01:00", buildRevision: "1ebdb0f5e1a5cc1b7f8c36af5e1f750141ab062b" }; +module.exports = { buildDate:"2023-11-06T00:21:41+01:00", buildRevision: "531e9d4aff47b7e8332420645546d25ab28acf85" };