Leere Fehlermeldung beim Speichern im Binärformat

Hallo,

ich wollte gerade die neue App testen und dazu mein Portfolio als binary speichern. Ich erhalte jedoch nur eine Error-Modal ohne einen Hinweis was das Problem ist. Ich nutze die aktuelle Version:

Version: 0.68.3 (March 2024)
Platform: macosx, x86_64
Java: 17.0.5+8-LTS, Azul Systems, Inc.

Screenshot 2024-04-17 at 21.56.09

Hat jemand einen Tipp wie ich den Fehler debuggen bzw. umgehen kann?

Steht im Fehlerprotokoll mehr?

Hallo @chirlu,

ich habe das Log gefunden. Leider wird nicht mit ausgegeben, bei welcher Transaction das Problem besteht:

Wed Apr 17 22:58:21 CEST 2024
UnsupportedOperationException

java.lang.UnsupportedOperationException
	at name.abuchen.portfolio.model.BuySellEntry.getCrossOwner(BuySellEntry.java:194)
	at name.abuchen.portfolio.model.ProtobufWriter.addTransaction(ProtobufWriter.java:976)
	at name.abuchen.portfolio.model.ProtobufWriter.lambda$13(ProtobufWriter.java:952)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
	at name.abuchen.portfolio.model.ProtobufWriter.saveTransactions(ProtobufWriter.java:952)
	at name.abuchen.portfolio.model.ProtobufWriter.save(ProtobufWriter.java:778)
	at name.abuchen.portfolio.model.ClientFactory$PlainWriterZIP.save(ClientFactory.java:216)
	at name.abuchen.portfolio.model.ClientFactory.writeFile(ClientFactory.java:641)
	at name.abuchen.portfolio.model.ClientFactory.saveAs(ClientFactory.java:593)
	at name.abuchen.portfolio.ui.editor.ClientInput.lambda$4(ClientInput.java:261)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at name.abuchen.portfolio.ui.editor.ClientInput.doSaveAs(ClientInput.java:258)
	at name.abuchen.portfolio.ui.editor.PortfolioPart.doSaveAs(PortfolioPart.java:423)
	at name.abuchen.portfolio.ui.handlers.SaveAsFileHandler.execute(SaveAsFileHandler.java:77)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:298)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:232)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:438)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:449)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:475)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4645)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4412)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3988)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:168)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1459)

Das scheint dieses throw zu sein: portfolio/name.abuchen.portfolio/src/name/abuchen/portfolio/model/BuySellEntry.java at master · portfolio-performance/portfolio · GitHub

In der XML ist mir eine Stelle aufgefallen. In einer account-transaction gibt es einen großen Block von weiteren portfolio-transactions. Was hat es mit dieser Verschachtelung auf sich? Ist das normal?

        <account-transaction>
          <uuid>8544d214-9780-4170-b248-d95043d996ad</uuid>
          <date>xxx</date>
          <currencyCode>EUR</currencyCode>
          <amount>xxx</amount>
          <security reference="../../../../../securities/security[22]"/>
          <crossEntry class="buysell">
            <portfolio>
              <uuid>0dcaf0bd-2216-4728-a8b5-cbbefa59000f</uuid>
              <name>Securities</name>
              <isRetired>false</isRetired>
              <referenceAccount reference="../../../../.."/>
              <transactions>
                <portfolio-transaction>
                  <uuid>1865cb50-6279-43f1-91fb-714f7317210a</uuid>
                  <date>xxx</date>
                  <currencyCode>EUR</currencyCode>
                  <amount>xxx</amount>
                  <security reference="../../../../../../../../../securities/security[2]"/>
                  <shares>xxx</shares>
                  <source>xxx</source>
                  <units>
                    <unit type="FEE">
                      <amount currency="EUR" amount="xxx"/>
                    </unit>
                  </units>
                  <updatedAt>xxx</updatedAt>
                  <type>DELIVERY_INBOUND</type>
                </portfolio-transaction>

Ja, das ist normal. Ein Objekt (hier das Portfolio) wird serialisiert, sobald es das erste Mal auftaucht.

Nein, Zeile 194, nicht Zeile 183. Offenbar ist irgendetwas an den Buchungen nicht konsistent. Wir hatten neulich schon einmal einen ähnlichen Fall, wo eine Buchung ein Zwitter aus Kauf und Einlieferung war.

Danke Chirlu. Hast du eine Idee wie ich das Problem beheben kann?

FWIW habe ich gerade einen PR auf Github laufen, bei dem - sollte er gemerged werden - im vorliegenden Fall die Transaktion mit ins Log ausgegeben werden würde, die zu der Exception geführt hat. Sollte Merge und Release in nicht allzu weiter Zukunft liegen, könntest du das vielleicht abwarten und dann mit einem aktualisiertem Logausschnitt nochmal vorbeikommen.

2 Likes

@Steven_Gonzalez

Meine Änderungen haben ihren Weg ins Release gefunden. Wenn dein Problem weiterhin besteht, sollte man jetzt zumindest eine Idee davon bekommen, welche Transaktion den Fehler bewirkt.

3 Likes