Xiphe / budgetbudget

🧮 make financial decisions with confidence
https://budgetbudget.app
GNU General Public License v3.0
92 stars 7 forks source link

Fehler beim Erstellen eines neuen Budgets mit "Start Date" in der Zukunft und vielen Buchungen #67

Closed netgitdom closed 3 years ago

netgitdom commented 3 years ago

Wenn ich ein neues Budget anlegen möchte, dafür mein Girokonto mit >5000 Buchungen auswähle und einen StartTermin == heute wähle, bekomme ich nach längerer Ladezeit folgenden Fehler:

Command failed: osascript /Applications/BudgetBudget.app/Contents/Resources/scripts/exportTransactions.applescript "c331caeb-e85d-49c9-9590-3ffdc4f3c32c" "2020-12-23"

Version 1.0.0-beta.9 (1.0.0-beta.9) mit MoneyMoneyApp 2.4.1 auf Big Sur 11.1

PS: Super cooles Projekt, vielen Dank dafür :-)

netgitdom commented 3 years ago

Ich glaube ich konnte das Problem etwas weiter eingrenzen. Ich habe aus historischen Gründen (aus YNAB übernommen) meine Kategorieren besonders markiert:

"Kategorie1 +" = Ansparen "Kategorie2 ~" = Level halten "Kategorie3 #" = Immer wieder bis Minimum auffüllen

Wenn ich nun Kategorien mit "~" habe, scheinen diese beim Laden von BudgetBudget Probleme zu verursachen, wenn ich die Kategorien umbenenne in "Kategorie2" funktioniert es, "Kategorie2 ~" macht hingegen Probleme.

edit: Leider war es das doch nicht, nach wie vor gibt es Probleme mit dem Laden und ich finde keinen Fehler :(

edit2: Es tritt auch bei einem neu angelegten, ansonsten leeren Offlinekonto auf, es machen scheinbar die Offlinekonten ( egal ob mit 3000 Einträgen oder auch nur 3 ) Probleme bei mir. Kann ich irgendwo mehr Infos sehen was genau fehlschlägt ?

netgitdom commented 3 years ago

Ich habe mir mal den "development mode" installiert um mehr Infos zu bekommen:

Error: Error invoking remote method 'MM_EXPORT_TRANSACTIONS': Error: Command failed: osascript /Users/xxx/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/xxx/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712) ▼ 2 stack frames were expanded. (anonymous function) unknown EventEmitter.o.invoke electron/js2c/renderer_init.js:71:535 ▲ 2 stack frames were expanded. async getTransactions src/moneymoney/getTransactions.ts:23 20 | } 21 | 22 | const startDate = format(new Date(startDateTimestamp), 'yyyy-MM-dd');

23 | const transactionsByAccount = validateTransactionByAccount( | ^ 24 | await ipcRenderer.invoke( 25 | 'MM_EXPORT_TRANSACTIONS', 26 | accountNumbers, View compiled This screen is visible only in development. It will not appear if the app crashes in production. Open your browser’s developer console to further inspect this error. Click the 'X' or hit ESC to dismiss this message

Wenn ich das AppleScript direkt ausführe, läuft es fehlerlos:

tell application "MoneyMoney" to export transactions from account "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" from date "2020-22-12" as "plist"

Ich bin leider kein Entwickler und finde es nicht. Ich bin aber gerne bereit Infos und Dinge zuzuarbeiten und Sachen zu testen. Noch mal meine bisherigen Erkenntnisse zusammengefasst:

Xiphe commented 3 years ago

Hey @netgitdom Sorry für's späte reagieren. Ich probier das gerade mal zu rekonstruieren. Passiert der Fehler bei dir auch, wenn das Datum in der Vergangenheit liegt?

netgitdom commented 3 years ago

Hi,

kein Problem :-) Ich hätte die Erstmeldung mal anpassen sollen, das Problem war scheinbar nicht das Datum, sondern es muss irgendwas mit (meinen) Offlinekonten zu tun haben. Wenn ich die Offlinekonten rausnehme funktioniert alles wie gewünscht. Im vorherigen Eintrag habe ich mal zusammengefasst wie mein aktueller Stand ist. Hätte ich vllt besser den Ursprungsissue belassen und einen neuen für die Offlinekonten gemacht :/

Xiphe commented 3 years ago

Alles klar!

Ich kann das Problem bei mir bisher nicht reproduzieren leider :(

Kannst du mal diese debug.js datei bei dir lokal erstellen (z.b. im Projekt-folder), dann oben ACCOUNT und ggf. START_DATE anpassen und das ganze im terminal mit node debug.js ausführen?

(Das ist quasi das gleiche was auf in der app läuft main/moneymoney/osascript.ts nur ohne die Electron App drum rum)

netgitdom commented 3 years ago

Ich habe die Datei bei mir erzeugt, habe den Account angepasst, bekomme folgenden Output:

node debug.js

Error: Command failed: osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)

at ChildProcess.exithandler (node:child_process:333:12)
at ChildProcess.emit (node:events:376:20)
at maybeClose (node:internal/child_process:1063:16)
at Socket.<anonymous> (node:internal/child_process:449:11)
at Socket.emit (node:events:376:20)
at Pipe.<anonymous> (node:net:666:12) {

killed: false, code: 1, signal: null, cmd: 'osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"', stderr: '/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n' }

Xiphe commented 3 years ago

Ok! Also den gleichen Fehler wie auch in der app 👍

Was passiert wenn du

osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"

im terminal ausführst?

Xiphe commented 3 years ago

Ok, dort passiert der Fehler also nicht.... Kannst den Kommentar gerne löschen, da stehen ja private Details drin.

Xiphe commented 3 years ago

Steht nix super geheimes drin, sonst hätte ich das nicht gepostet, aber gibt ein gutes Gefühl, dass du auf sowas achtest :-)

Danke :) Da du das jetzt nur raus-editiert hast, kann man über den "edited" dialog immer noch auf die vorherige version zugreifen. Darum meinte ich löschen.

Zurück zum Thema:

Welche nodejs version läuft bei dir? node -v im terminal

netgitdom commented 3 years ago

node -v
v15.5.0

Xiphe commented 3 years ago

und welche shell benutzt du? echo "$SHELL"

netgitdom commented 3 years ago

echo "$SHELL"
/bin/zsh

Xiphe commented 3 years ago

Kannst du in der debug.js mal die shell explizit setzen?: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js#L20

Xiphe commented 3 years ago

und dann noch mal node debug.js ausführen?

netgitdom commented 3 years ago

Leider unverändert:

`Error: Command failed: osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)

at ChildProcess.exithandler (node:child_process:333:12)
at ChildProcess.emit (node:events:376:20)
at maybeClose (node:internal/child_process:1063:16)
at Socket.<anonymous> (node:internal/child_process:449:11)
at Socket.emit (node:events:376:20)
at Pipe.<anonymous> (node:net:666:12) {

killed: false, code: 1, signal: null, cmd: 'osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"', stderr: '/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n' }`

debug.js hatte ich angepasst:

.map((arg) =>"${arg.replace(/"/g, '\"')}") .join(' ')}, { maxBuffer: MAX_BUFFER, shell: '/bin/zsh' }, (err, stdout, stderr) => { if (err) {`

Xiphe commented 3 years ago

Hmpf... so ein mist!

Hast du zufällig noch ein Intel-Mac system auf dem du auch MoneyMoney hast? Und kannst das ganze da mal testen?

Xiphe commented 3 years ago

Kannst du bitte folgendes auch noch mal testen:

  1. Ein leeren Offline-Account
  2. Diese Variante von debug.js: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js
Xiphe commented 3 years ago

(ich hab den appleScript timeout mal auf 10min erhöht)

Bekommst du den Fehler dann auch erst nach 10 Minuten (vorher 2) oder schneller?

netgitdom commented 3 years ago

Ich habe mal das Terminal in Rosetta geöffnet und dann node debug.js ausgeführt, aber mit gleichem Ergebnis. Einen anderen Intel Mac hab ich nicht mit dem Setup, müsste ich erst alles noch einrichten.

Leeres Konto

node debug.js                                                                                                    
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>creator</key>
    <string>MoneyMoney 2.4.1</string>
    <key>transactions</key>
    <array/>
</dict>
</plist>

Mit 2 Transaktionen drin funktioniert es auch, aber der 3. Transaktion kommt der Fehler.

netgitdom commented 3 years ago

(ich hab den appleScript timeout mal auf 10min erhöht)

Bekommst du den Fehler dann auch erst nach 10 Minuten (vorher 2) oder schneller?

Das hab ich zu spät gesehen, habe jetzt mal das neue Offlinekonto mit 3 Transaktionen gestartet und schaue mal wie lange es bis zum Error dauert.

Xiphe commented 3 years ago

Ist es egal welche 2 Transaktionen? oder ist evtl. wirklich mit der einen etwas Kaputt?

Xiphe commented 3 years ago

Muss mich gerade mal um etas anderes kümmern. Werde später antworten. Sonst können wir vielleicht morgen ja mal nen call machen, dann gehts vielleicht schneller :)

Danke für deine Mithilfe!

netgitdom commented 3 years ago

/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)

Er bricht nach 2 Minuten wieder ab, 15:19:19 Ausführung Start, 15:21:21 Ausführung Ende mit Fehler

Es ist egal welche Transaktionen das sind, ab der 3. kommt das Problem.

Kein Grund sich zu bedanken, so ein Luxussupport bei nem kostenlosen Projekt ist nicht selbstverständlich :-)

netgitdom commented 3 years ago

Hier kommen noch die 2:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>creator</key>
    <string>MoneyMoney 2.4.1</string>
    <key>transactions</key>
    <array>
        <dict>
            <key>accountUuid</key>
            <string>07f3f565-bfd8-4c98-beb0-66bc0ac486a0</string>
            <key>amount</key>
            <real>-10</real>
            <key>booked</key>
            <true/>
            <key>bookingDate</key>
            <date>2021-01-04T12:00:00Z</date>
            <key>category</key>
            <string>Lebenshaltung\Essen Allgemein</string>
            <key>categoryId</key>
            <integer>77</integer>
            <key>categoryUuid</key>
            <string>d4c0a81d-2522-46e2-ab69-d6c3e7790279</string>
            <key>checkmark</key>
            <false/>
            <key>currency</key>
            <string>EUR</string>
            <key>id</key>
            <integer>17251</integer>
            <key>name</key>
            <string>NochJemand</string>
            <key>valueDate</key>
            <date>2021-01-04T12:00:00Z</date>
        </dict>
        <dict>
            <key>accountUuid</key>
            <string>07f3f565-bfd8-4c98-beb0-66bc0ac486a0</string>
            <key>amount</key>
            <real>-20</real>
            <key>booked</key>
            <true/>
            <key>bookingDate</key>
            <date>2021-01-04T12:00:00Z</date>
            <key>category</key>
            <string>Allgemeine Ausgaben\Dienstleistungen</string>
            <key>categoryId</key>
            <integer>66</integer>
            <key>categoryUuid</key>
            <string>830791eb-8643-4cf8-a842-4df2bc7810a1</string>
            <key>checkmark</key>
            <false/>
            <key>currency</key>
            <string>EUR</string>
            <key>id</key>
            <integer>17250</integer>
            <key>name</key>
            <string>Jemand</string>
            <key>valueDate</key>
            <date>2021-01-04T12:00:00Z</date>
        </dict>
    </array>
</dict>
</plist>

Ab dem 3. dann wieder das Problem. Hier die 3 als Screenshot 2021-01-04 at 15 24

netgitdom commented 3 years ago

Ich habe jetzt mal auf nem Intel Mac versucht das ganze nachzustellen, ohne Gewähr wie vergleichbar das ist.

macOS 10.14.6 node: v12.16.3 Shell: /usr/local/bin/zsh ( mit brew nachinstalliert )

Aber ist halt das ältere OS, die ältere node Version und ne andere zsh. Also eigentlich alles anders und ich kann hier leider nicht einfach Dinge upgrade weil das meine Produktivmaschine ist) Hoffe es hat vllt trotzdem geholfen.

Xiphe commented 3 years ago

Er bricht nach 2 Minuten wieder ab, 15:19:19 Ausführung Start, 15:21:21 Ausführung Ende mit Fehler

Ok, mir war auch grad noch aufgefallen, dass der timeout bei dir nicht geändert ist, dafür müsstest du exportTransactions.applescript anpassen – denke aber das ist egal. Wenn drei transaktionen nicht nach ein paar Millisekunden exportiert sind, werden sie es auch nicht nach 10 Minuten sein.

Es ist egal welche Transaktionen das sind, ab der 3. kommt das Problem.

Crazy...

...

Ich habs hier mit MacOs BigSur 11.0.1 auf Intel am laufen. Da geht alles. Gehe darum erst mal naiv davon aus, dass es ein M1 bug ist. (Hab mal um Hilfe beim validieren gebeten)

Kannst du noch ein weites mal die debug.js aktualisieren: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js Meine Hoffnung ist gering, aber ich habs nochmal vereinfacht...

netgitdom commented 3 years ago

node läuft übrigens in Rosetta, also als Intel ist mir noch aufgefallen auf dem M1, also nicht nativ.

Habe das debug.js aktualisiert.

Error: Command failed: osascript -e "tell application \"MoneyMoney\" to export transactions from account \"07f3f565-bfd8-4c98-beb0-66bc0ac486a0\" from date \"2020-12-22\" as \"plist\""
33:138: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)

    at ChildProcess.exithandler (node:child_process:333:12)
    at ChildProcess.emit (node:events:376:20)
    at maybeClose (node:internal/child_process:1063:16)
    at Socket.<anonymous> (node:internal/child_process:449:11)
    at Socket.emit (node:events:376:20)
    at Pipe.<anonymous> (node:net:666:12) {
  killed: false,
  code: 1,
  signal: null,
  cmd: 'osascript -e "tell application \\"MoneyMoney\\" to export transactions from account \\"07f3f565-bfd8-4c98-beb0-66bc0ac486a0\\" from date \\"2020-12-22\\" as \\"plist\\""',
  stderr: '33:138: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n'
}

Wieder nach 2 Minuten, denke auch, macht vmtl. keinen Sinn den Timeout hochzustellen. Schade ist, dass man nicht sieht woran er hängt.

netgitdom commented 3 years ago

Ich kann noch was beisteuern, ich habe gerade mal MoneyMoney (läuft als native Apple Version) mit Rosetta gestartet ( also über Informationen und dann "Mit Rosetta öffnen" ausgewählt ) und siehe da, jetzt gehts.

Habe das jetzt ein paar mal hin und her getestet und ich kann es damit reproduzieren.

Am Budget selber habe ich dabei nix geändert.

Scheint also irgendeinen Zusammenhang zwischen der M1 Version von MoneyMoney zu geben. Ob das jetzt MM selber oder irgendeine API ist kann ich natürlich nicht sagen :)

Aber immerhin ist das mal ein Workaround für mich. Ich liefere aber gerne weiter Daten zu um dem beizukommen.

Xiphe commented 3 years ago

Hammer! Das ist ja schon mal sehr gut zu wissen und sehr interessant! Ich werde das mal so an MoneyMoney weitergeben.

Langfristig will ich natürlich auf BudgetBudget nativ für M1 kompilieren, hab mich aber noch nicht weiter drum gekümmert ob und wie der status da mit Electron aussieht.

Oder doch noch swift lernen und direkt als native app noch mal bauen 😬

Xiphe commented 3 years ago

Korrigiere: Scheinbar müsste ich die App schon jetzt auch für Apple Silicon bauen können.

Werde das als nächstes machen und dir dann bescheid sagen

Xiphe commented 3 years ago

@netgitdom kannst du diese Version mal testen? https://github.com/Xiphe/budgetbudget/releases/download/v1.0.0-beta.9/BudgetBudget-1.0.0-beta.9-arm64.dmg

netgitdom commented 3 years ago

Das sieht seht gut aus:

Und es läuft, habe sowohl das Testofflinekonto als auch mein "produktives" geladen, neue Einträge getätigt und funktioniert nach meinen ersten Versuchen erst mal, spitze 👍

Xiphe commented 3 years ago

Moving on to: https://github.com/Xiphe/budgetbudget/issues/68