diff --git a/packages/loot-core/src/client/shared-listeners.js b/packages/loot-core/src/client/shared-listeners.js index 766189bb7d6576fa1faf7ece20a67812e8766e7c..55b393a13ed47df17d1570ecb06f1535ac7a42bf 100644 --- a/packages/loot-core/src/client/shared-listeners.js +++ b/packages/loot-core/src/client/shared-listeners.js @@ -227,6 +227,7 @@ export function listenForSyncEvent(actions, store) { } break; case 'invalid-schema': + console.trace('invalid-schema', meta); notif = { title: 'Update required', message: @@ -236,6 +237,7 @@ export function listenForSyncEvent(actions, store) { }; break; case 'apply-failure': + console.trace('apply-failure', meta); notif = { message: `We couldn't apply that change to the database. Please report this as a bug by [opening a Github issue](${githubIssueLink}).`, }; @@ -245,6 +247,7 @@ export function listenForSyncEvent(actions, store) { // Show nothing break; default: + console.trace('unkown error', info); notif = { message: `We had problems syncing your changes. Please report this as a bug by [opening a Github issue](${githubIssueLink}).`, }; diff --git a/packages/loot-core/src/server/spreadsheet/spreadsheet.js b/packages/loot-core/src/server/spreadsheet/spreadsheet.js index eda4175bee46112220061b842c282a41b1b425ef..6873d1b9a2b2b8bc75a0135f8ebaeeab280976e2 100644 --- a/packages/loot-core/src/server/spreadsheet/spreadsheet.js +++ b/packages/loot-core/src/server/spreadsheet/spreadsheet.js @@ -133,7 +133,7 @@ export default class Spreadsheet { if (result instanceof Promise) { console.warn( - 'dynamic cell returned a promise! this is discouraged because errors are not handled properly', + `dynamic cell ${name} returned a promise! this is discouraged because errors are not handled properly`, ); } } else if (node.sql) { diff --git a/packages/loot-core/src/server/sync/index.js b/packages/loot-core/src/server/sync/index.js index 5805ece55b15e8ab4abd3b6fceae2a3819ae1550..5343a23dd070e636122b7e758bc5fb2606dc8796 100644 --- a/packages/loot-core/src/server/sync/index.js +++ b/packages/loot-core/src/server/sync/index.js @@ -75,8 +75,8 @@ function apply(msg, prev) { if (dataset === 'prefs') { // Do nothing, it doesn't exist in the db } else { + let query; try { - let query; if (prev) { query = { sql: db.cache(`UPDATE ${dataset} SET ${column} = ? WHERE id = ?`), @@ -90,9 +90,11 @@ function apply(msg, prev) { } db.runQuery(query.sql, query.params); - } catch (e) { - //console.log(e); - throw new SyncError('invalid-schema'); + } catch (error) { + throw new SyncError('invalid-schema', { + error: { message: error.message, stack: error.stack }, + query, + }); } } } @@ -128,8 +130,8 @@ async function fetchAll(table, ids) { try { let rows = await db.runQuery(sql, partIds, true); results = results.concat(rows); - } catch (e) { - throw new SyncError('invalid-schema'); + } catch (error) { + throw new SyncError('invalid-schema', { error, sql, params: partIds }); } } @@ -415,9 +417,10 @@ async function _sendMessages(messages) { app.events.emit('sync', { type: 'error', subtype: 'apply-failure', + meta: e.meta, }); } else { - app.events.emit('sync', { type: 'error' }); + app.events.emit('sync', { type: 'error', meta: e.meta }); } }