[Bug]: Actual Budget version 23.4.0 has broken syncing with @actual-app/api #338

Closed
opened 2026-02-28 18:59:54 -06:00 by GiteaMirror · 6 comments
Owner

Originally created by @callumgare on GitHub (Apr 7, 2023).

Verified issue does not already exist?

  • I have searched and found no existing issue

What happened?

When attempting to to call the downloadBudget() function of @actual-app/api to sync with an Actual Budget instance running version 23.4.0 the following error occurs:

Downloading ActualBudget cache locally
Error updating Error: out-of-sync-migrations
    at checkDatabaseValidity (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61506:13)
    at Module.migrate (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61513:3)
    at async runMigrations (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66443:3)
    at async updateVersion (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66459:3)
    at async loadBudget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61095:5)
    at async module.exports../packages/loot-core/src/server/main.js.handlers.load-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60835:13)
    at async module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60797:3)
    at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18)
TypeError: Cannot read properties of null (reading 'timestamp')
    at _fullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64612:77)
    at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64524:22
    at onceFn (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66771:17)
    at initialFullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64512:22)
    at module.exports../packages/loot-core/src/server/main.js.handlers.sync-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60818:71)
    at module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60800:41)
    at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18)
[Exception] TypeError: Cannot read properties of null (reading 'timestamp')
    at _fullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64612:77)
    at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64524:22
    at onceFn (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66771:17)
    at initialFullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64512:22)
    at module.exports../packages/loot-core/src/server/main.js.handlers.sync-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60818:71)
    at module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60800:41)
    at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18)
Error updating Error: out-of-sync-migrations
    at checkDatabaseValidity (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61506:13)
    at Module.migrate (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61513:3)
    at async runMigrations (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66443:3)
    at async updateVersion (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66459:3)
    at async loadBudget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61095:5)
    at async module.exports../packages/loot-core/src/server/main.js.handlers.load-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60835:13)
    at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51351:5)
/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51202
      let latestTimestamp = Object(_crdt__WEBPACK_IMPORTED_MODULE_9__["getClock"])().timestamp.toString();
                                                                                    ^

TypeError: Cannot read properties of null (reading 'timestamp')
    at Object.undoDisabled (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51202:85)
    at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61798:10
    at run (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66739:29)
    at sequenceState.queue.push.resolve.resolve (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66754:16)
    at new Promise (<anonymous>)
    at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66753:14
    at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51201:73
    at runHandler (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61780:17)
    at Object.send (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61377:82)
    at send (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/methods.js:5:19)

Node.js v19.5.0

I have confirmed that this issue is introduced by version 23.4.0 by testing it using the docker tag actualbudget/actual-server:23.4.0 vs jlongster/actual-server:23.3.2 both with a freshly created database.

I have updated https://github.com/callumgare/actual-budget-api-bug to help reproduce the issue. You can run it with:

git clone https://github.com/callumgare/actual-budget-api-bug
cd actual-budget-api-bug
npm install && env AB_SERVER_URL=%%%% AB_PASSWORD=%%%% AB_SYNC_ID=%%%% AB_ACCOUNT_ID=%%%% node index.js

Where are you hosting Actual?

Docker

What browsers are you seeing the problem on?

Other

Operating System

Mac OSX

Originally created by @callumgare on GitHub (Apr 7, 2023). ### Verified issue does not already exist? - [X] I have searched and found no existing issue ### What happened? When attempting to to call the downloadBudget() function of @actual-app/api to sync with an Actual Budget instance running version 23.4.0 the following error occurs: ``` Downloading ActualBudget cache locally Error updating Error: out-of-sync-migrations at checkDatabaseValidity (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61506:13) at Module.migrate (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61513:3) at async runMigrations (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66443:3) at async updateVersion (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66459:3) at async loadBudget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61095:5) at async module.exports../packages/loot-core/src/server/main.js.handlers.load-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60835:13) at async module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60797:3) at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18) TypeError: Cannot read properties of null (reading 'timestamp') at _fullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64612:77) at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64524:22 at onceFn (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66771:17) at initialFullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64512:22) at module.exports../packages/loot-core/src/server/main.js.handlers.sync-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60818:71) at module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60800:41) at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18) [Exception] TypeError: Cannot read properties of null (reading 'timestamp') at _fullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64612:77) at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64524:22 at onceFn (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66771:17) at initialFullSync (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:64512:22) at module.exports../packages/loot-core/src/server/main.js.handlers.sync-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60818:71) at module.exports../packages/loot-core/src/server/main.js.handlers.download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60800:41) at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51345:18) Error updating Error: out-of-sync-migrations at checkDatabaseValidity (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61506:13) at Module.migrate (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61513:3) at async runMigrations (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66443:3) at async updateVersion (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66459:3) at async loadBudget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61095:5) at async module.exports../packages/loot-core/src/server/main.js.handlers.load-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:60835:13) at async module.exports../packages/loot-core/src/server/api.js.handlers.api/download-budget (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51351:5) /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51202 let latestTimestamp = Object(_crdt__WEBPACK_IMPORTED_MODULE_9__["getClock"])().timestamp.toString(); ^ TypeError: Cannot read properties of null (reading 'timestamp') at Object.undoDisabled (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51202:85) at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61798:10 at run (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66739:29) at sequenceState.queue.push.resolve.resolve (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66754:16) at new Promise (<anonymous>) at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:66753:14 at /Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:51201:73 at runHandler (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61780:17) at Object.send (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/app/bundle.api.js:61377:82) at send (/Users/callumgare/tmp/actual-budget-api-bug/node_modules/@actual-app/api/methods.js:5:19) Node.js v19.5.0 ``` I have confirmed that this issue is introduced by version 23.4.0 by testing it using the docker tag `actualbudget/actual-server:23.4.0` vs `jlongster/actual-server:23.3.2` both with a freshly created database. I have updated https://github.com/callumgare/actual-budget-api-bug to help reproduce the issue. You can run it with: ```shell git clone https://github.com/callumgare/actual-budget-api-bug cd actual-budget-api-bug npm install && env AB_SERVER_URL=%%%% AB_PASSWORD=%%%% AB_SYNC_ID=%%%% AB_ACCOUNT_ID=%%%% node index.js ``` ### Where are you hosting Actual? Docker ### What browsers are you seeing the problem on? Other ### Operating System Mac OSX
GiteaMirror added the bugAPI labels 2026-02-28 18:59:54 -06:00
Author
Owner

@j-f1 commented on GitHub (Apr 7, 2023):

I think this means that a migration was not added to the API package. If you add https://github.com/actualbudget/actual/blob/master/packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql to the migrations folder of node_modules/@actual-app/api, does that fix the issue?

@j-f1 commented on GitHub (Apr 7, 2023): I think this means that a migration was not added to the API package. If you add https://github.com/actualbudget/actual/blob/master/packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql to the `migrations` folder of `node_modules/@actual-app/api`, does that fix the issue?
Author
Owner

@callumgare commented on GitHub (Apr 7, 2023):

Yep! That does fix it :)

Downloading ActualBudget cache locally
Loading fresh spreadsheet
Syncing since 2023-04-07T22:13:01.867Z-0000-0000000000000000 0 (attempt: 0)
Got messages from server 8
{
  added: [
    '88974da4-c4fa-4393-903d-9fbdea93b314',
    '090c8f71-54db-4d74-835c-ac7e2caeb539',
    '8e6c8faa-061a-494a-91e2-7287074911ec'
  ],
  updated: []
}
Loaded spreadsheet from cache (712 items)
Syncing since 2023-04-07T22:18:01.954Z-0007-868715777c224655 30 (attempt: 0)
Got messages from server 0
@callumgare commented on GitHub (Apr 7, 2023): Yep! That does fix it :) ``` Downloading ActualBudget cache locally Loading fresh spreadsheet Syncing since 2023-04-07T22:13:01.867Z-0000-0000000000000000 0 (attempt: 0) Got messages from server 8 { added: [ '88974da4-c4fa-4393-903d-9fbdea93b314', '090c8f71-54db-4d74-835c-ac7e2caeb539', '8e6c8faa-061a-494a-91e2-7287074911ec' ], updated: [] } Loaded spreadsheet from cache (712 items) Syncing since 2023-04-07T22:18:01.954Z-0007-868715777c224655 30 (attempt: 0) Got messages from server 0 ```
Author
Owner

@aheilmann commented on GitHub (Apr 9, 2023):

Same issue, same fix applied. Works like a charm.
api version: 5.1.1

@aheilmann commented on GitHub (Apr 9, 2023): Same issue, same fix applied. Works like a charm. api version: 5.1.1
Author
Owner

@j-f1 commented on GitHub (Apr 9, 2023):

Will be fixed by #870 which will also prevent this from happening in the future.

@j-f1 commented on GitHub (Apr 9, 2023): Will be fixed by #870 which will also prevent this from happening in the future.
Author
Owner

@j-f1 commented on GitHub (Apr 9, 2023):

Give 5.1.2 a try! Should no longer need the workaround.

@j-f1 commented on GitHub (Apr 9, 2023): Give 5.1.2 a try! Should no longer need the workaround.
Author
Owner

@callumgare commented on GitHub (Apr 10, 2023):

Great! Works a treat :)

@callumgare commented on GitHub (Apr 10, 2023): Great! Works a treat :)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#338