Problem beim Starten: „XML kann nicht geparst werden“

Ich glaube nicht - die Backups sind Kopien auf os Level, da gibts kein Problem. Da die XMLs jetzt ok sind, sollten es die Kopien eigentlich auch sein… so die Hoffnung. Hab es jetzt mehrfach gecheckt und sieht bis jetzt gut aus.

Gruß
Mala

1 Like

Ich empfehle bei jedem Speichervorgang der Datenfiles bzw. der Depots auf einem NAS Laufwerk das Icon in der Taskliste des Synology Drive Clients zu beobachten und sicherzustellen, dass ein weiteres Arbeiten mit PP erst nach dem vollständig abgeschlossenen Speichervorgang stattfindet. Das kleine ±Zeichen auf dem Icon während des Speicherns muß vor dem Weiterarbeiten mit PP komplett verschwunden sein.
Seitdem ich diese Erfahrung gemacht habe, habe ich keinen Parsing-Hinweis mehr bekommen. Die daraus bei mir entstandene Löschung von ca. 15 komplexeren Filtern und der Neuaufbau dieser Filter ist mir seidem erspart geblieben.

1 Like

Mit Version 0.61.1 setzt PP jetzt eine Dateisperre beim Schreiben. Es sieht so aus als würde sich Synology daran halten. Schauen wir mal.

1 Like

Hallo zusammen,

ich schließe mich mal mit einer ähnlichen Fehlermeldung an.

Anfang Mrz tauchte erst eine kurze Fehlermeldung während der Nutzung auf(leider weiß ich nicht mehr genau, was da stand), PP funktionierte aber weiter reibungslos. Zur Sicherheit habe ich es aber nochmal unter einem anderen Namen zwischengespeichert.
Nach dem erneuten Öffnen dann jedoch diese Meldung:

XML kann nicht geparst werden:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.io.StreamException
cause-message :
class :name.abuchen.portfolio.model.Dashboard$Column
required-type : name.abuchen.portfolio.model.Dashboard$Column converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path : /client/dashboards/dashboard[21]/columns/column[5]
line number : 426148
class[1] : java.util.ArrayList
required-type[1] : java.util.ArrayList
converter-type[1] : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2] : 
name.abuchen.portfolio.model.Dashboard
required-type[2] : name.abuchen.portfolio.model.Dashboard 
class[3] : name.abuchen.portfolio.model.Client
required-type[3] : name.abuchen.portfolio.model.Client
version : not available

Ist die gleiche Meldung auch für die .backup.xml-Dateien.
Gespeichert sind die Dateien in einem lokalen Verzeichnis.

Jetzt die kurze Frage an die ganzen Profis hier, bevor ich mich ans neu erstellen machen muss (wird ganz schön was an Arbeit werden…), kann jemand aus der Fehlermeldung irgendeinen Schluss ziehen? Lässt sich hier etwas recovern oder wenigstens fürs nächste mal vermeiden, dass sowas nocheinmal passiert?

Vielen Dank schonmal im Voraus für eure Vorschläge und natürlich auch großen Dank für die beeindruckende Entwicklerarbeit, die hinter so einem Projekt steht!

LG Wombat

Welche PP und Java Version wird verwendet?

Danke für die schnelle Antwort.

Das schreibt PP:

Version: 0.61.4 (März 2023)
Platform: win32, x86_64
Java: 17.0.5+8-LTS, Azul Systems, Inc.

Ich hoffe das hilft weiter.

LG Wombat

Die Fehlermeldung war schon eindeutig.

Nicht nur speziell an @Wombat, sondern an alle die bei so einem Vorfall sofort an “neu erstellen” denken: Warum zum Henker habt Ihr eigentlich alle kein Backup auf einem Zweitmedium, so wie man das für Daten die einem wichtig sind und/oder die viel Arbeit machen haben sollte? Ist doch wirklich nicht schwer umzusetzen.

2 Likes

Hab die Autosave-Funktion auch auf 5 Min. stehen, daher auch bei mir keine .backup-after-open.xml. Sollte die zitierte Lösung auch mit der .backup.xml funktionieren? Version stimmt ja, öffnen kann er es trotzdem nicht. Kann es dran liegen, dass ich nach der Fehlermeldung noch weiter arbeiten konnte, also nach 5 Min. auch eine neue, defekte backup.xml erstellt wurde?

Vor allem auch, seit es günstigen Onlinespeicher gibt.

1 Like

Vielleicht sollte man das für die Zukunft rausnehmen. Eigentlich gibt es keinen zwingenden Grund, warum aktiviertes automatisches Speichern das Backup-after-open deaktivieren sollte.

Du musst dir die vorhandenen Dateien mal anschauen. Die Dashboards sind eigentlich ziemlich am Ende der Datei; falls der Teil davor noch da ist, sollten Wertpapiere und Buchungen noch vorhanden sein.

3 Likes

Die Fehlermeldung ist ähnlich, aber nicht identisch.

Erstens: wenn Du mir das kaputte XML schickst kann ich das soweit wie möglich reparieren. Wertpapier und Buchungen sollten noch existieren. Schick die mir an portfolio (dot) performance (dot) help (at) gmail (dot) com

Zweitens: mich würde die Datei so oder so interessieren um zu verstehen was da kaputt gegangen ist.

Das ist doch eigentlich schon geklärt? Durch die Geschichte mit toList(), das eine unveränderliche Liste erzeugt, kam es zu einem Serialisierungsfehler beim Speichern, d.h. das Speichern hat an der betreffenden Stelle (bei der duplizierten Dashboard-Spalte) einfach aufgehört.

Du hast recht. Die Fehlermeldung get auch auf “column: converter not found”. Ich dachte es wäre eine andere Fehlermeldung gewesen (weil die interne statische Liste nicht serialisiert werden konnte).

Ich habe es gestern irgendwie total vermasselt und jetzt lässt sich meine Portfolio Datei nicht mehr öffnen :disappointed:

Das Speichern beim Schließen hat gestern extrem lange gedauert sodass ich irgendwann vom PC weg gegangen bin. Als ich wieder kam, war die Datei geschlossen und ich habe den PC herunter gefahren.

So ist die Lage:

Ich möchte die Datei, die gestern Abend um 19:08 Uhr gespeichert wurde öffnen. Leider kommt die Meldung “XML kann nicht geparst werden”. Heute Morgen waren die 4 markierten Dateien in meinem Verzeichnis. Man sieht schon, die Backup Dateien sind irgendwie aus November 2022. Die nicht-markierten Dateien sind heute entstanden, immer wenn ich versucht habe, eine der Backup Dateien zu öffnen.
Dazu kommt: Mein Backup-Programm hat - ohne sich zu melden - seit Januar ausgerechnet vom PP Ordner keine Backups gemacht. Ich drehe durch :face_with_spiral_eyes:

Portfolio Performance
Version: 0.61.4 (März 2023)
Platform: win32, x86_64
Java: 17.0.5+8-LTS, Azul Systems, Inc.

Hat jemand spontan eine Idee was hier das Problem sein könnte und wie es evtl zu lösen ist?
Hier mal das Fehlerprotokoll.

Vielen Dank!

Wed Mar 29 16:33:07 CEST 2023
XML kann nicht geparst werden: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.io.StreamException
cause-message       : 
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /client/securities/security[45]/prices
line number         : 198241
class[1]            : name.abuchen.portfolio.model.Security
required-type[1]    : name.abuchen.portfolio.model.Security
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2]            : name.abuchen.portfolio.model.Client
required-type[2]    : name.abuchen.portfolio.model.Client
version             : not available
-------------------------------

java.io.IOException: XML kann nicht geparst werden: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.io.StreamException
cause-message       : 
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /client/securities/security[45]/prices
line number         : 198241
class[1]            : name.abuchen.portfolio.model.Security
required-type[1]    : name.abuchen.portfolio.model.Security
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2]            : name.abuchen.portfolio.model.Client
required-type[2]    : name.abuchen.portfolio.model.Client
version             : not available
-------------------------------

	at name.abuchen.portfolio.model.ClientFactory$XmlSerialization.load(ClientFactory.java:134)
	at name.abuchen.portfolio.model.ClientFactory$PlainWriter.load(ClientFactory.java:160)
	at name.abuchen.portfolio.model.ClientFactory$Decryptor.load(ClientFactory.java:332)
	at name.abuchen.portfolio.model.ClientFactory.load(ClientFactory.java:537)
	at name.abuchen.portfolio.ui.editor.LoadClientThread.run(LoadClientThread.java:34)

Caused by: com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.io.StreamException
cause-message       : 
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /client/securities/security[45]/prices
line number         : 198241
class[1]            : name.abuchen.portfolio.model.Security
required-type[1]    : name.abuchen.portfolio.model.Security
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2]            : name.abuchen.portfolio.model.Client
required-type[2]    : name.abuchen.portfolio.model.Client
version             : not available
-------------------------------

	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52)
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132)
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:99)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:92)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:86)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:81)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1421)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1399)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1284)
	at name.abuchen.portfolio.model.ClientFactory$XmlSerialization.load(ClientFactory.java:122)
	... 4 more

Caused by: com.thoughtworks.xstream.io.StreamException: 

	at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:126)
	at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:148)
	at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:135)
	at com.thoughtworks.xstream.io.xml.AbstractPullReader.hasMoreChildren(AbstractPullReader.java:87)
	at com.thoughtworks.xstream.io.ReaderWrapper.hasMoreChildren(ReaderWrapper.java:32)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:90)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:86)
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:81)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
	... 35 more

Caused by: java.io.IOException: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
	at java.base/javax.crypto.CipherInputStream.getMoreData(Unknown Source)
	at java.base/javax.crypto.CipherInputStream.read(Unknown Source)
	at java.base/java.io.FilterInputStream.read(Unknown Source)
	at java.base/java.io.PushbackInputStream.read(Unknown Source)
	at java.base/java.util.zip.InflaterInputStream.fill(Unknown Source)
	at java.base/java.util.zip.InflaterInputStream.read(Unknown Source)
	at java.base/java.util.zip.ZipInputStream.read(Unknown Source)
	at java.base/sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
	at java.base/sun.nio.cs.StreamDecoder.implRead(Unknown Source)
	at java.base/sun.nio.cs.StreamDecoder.read(Unknown Source)
	at java.base/java.io.InputStreamReader.read(Unknown Source)
	at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)
	at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
	at org.xmlpull.mxp1.MXParser.parseAttribute(MXParser.java:2026)
	at org.xmlpull.mxp1.MXParser.parseStartTag(MXParser.java:1799)
	at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1127)
	at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
	at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:109)
	... 43 more

Caused by: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher

	at java.base/com.sun.crypto.provider.CipherCore.prepareInputBuffer(Unknown Source)
	at java.base/com.sun.crypto.provider.CipherCore.doFinal(Unknown Source)
	at java.base/com.sun.crypto.provider.AESCipher.engineDoFinal(Unknown Source)
	at java.base/javax.crypto.Cipher.doFinal(Unknown Source)
	... 61 more

Ja, es sieht merkwürdig aus, dass die Settings-Datei 13 Minuten jünger ist (und außerdem sehr groß).

Man sieht, dass die Datei sehr viel kürzer ist als die Backup-Versionen. Der Rest fehlt offensichtlich.

Wie kommt das? Hattest du die Datei nie geöffnet, oder lief PP monatelang?

Was passiert dabei? Was ist mit den gesicherten Dateien von Januar?

Vielen Dank für Deine Antworten!
Irgendwie bekomme ich das mit dem Zitieren nicht so elegant hin wie Du, deshalb hier mit der Hand am Arm:

“Wie kommt das? Hattest du die Datei nie geöffnet, oder lief PP monatelang?”
Ich weiß leider nicht wie das kommt und es ist mir auch nie aufgefallen. Die Datei wird ca ein- bis zweimal die Woche geöffnet, bearbeitet und gespeichert.
Die Datei(en) liegen in einer Cloud die über WebDAV angegebunden ist. Dabei scheint die Erstellung der automaischen Backup-Dateien irgendwie nicht zu funktionieren.

“Was passiert dabei? Was ist mit den gesicherten Dateien von Januar?”
Alle Dateien, die irgendwie backup im Namen haben, haben den Datenstand vom 22.11.2022 - also wenn ich sie öffne, sehe ich, dass die letzte Buchung unter “alle Buchungen” am 22.11.2022 stattgefunden hat.
Die (lokal auf meinem PC) gesicherte Datei vom 04.01.2023 lässt sich ganz normal öffnen und hat auch den Stand vom 04.01.2023.

Was meinst Du? Besteht eine realistische Chance die Daten irgendwie zu retten oder kann ich schon mal die Datei vom Januar nehmen und anfangen alles wieder einzulesen/nachzutragen?

Nicht 2. 11.? Das entspräche dem Dateidatum.

Das erste Drittel (ungefähr) der Datei ist wahrscheinlich da und damit auch die in diesem Teil enthaltenen Daten. Allerdings ist es gerade bei Buchungen nicht ganz einfach, die da herauszuziehen (weil Buchungen meistens mehrere Teile betreffen – Wertpapier, Depot, Konto – und deshalb über die Datei verteilt sind). Wenn da nichts Unwiederbringliches drinsteckt, lohnt sich der Aufwand vermutlich nicht, sondern es geht wohl am schnellsten, die Januar-Datei zu nehmen und die Buchungen aus den Bankabrechnungen nachzutragen.

Das ist alles ein bisschen seltsam. :thinking: Grundsätzlich sind aber alle Arten von Netzlaufwerken, Cloud-Anbindungen usw. empfindlich gegen Störungen. Wenn du in diesem Thread blätterst, wirst du sehen, dass fast alle Klagen über plötzlichen Datenverlust solche Systeme betreffen.

1 Like

“Nicht 2. 11.? Das entspräche dem Dateidatum.”
Doch, Du hast recht. 02.11. Da ist mir ein Typo unterlaufen.

“Das erste Drittel (ungefähr) der Datei ist wahrscheinlich da und damit auch die in diesem Teil enthaltenen Daten. Allerdings ist es gerade bei Buchungen nicht ganz einfach, die da herauszuziehen (weil Buchungen meistens mehrere Teile betreffen – Wertpapier, Depot, Konto – und deshalb über die Datei verteilt sind). Wenn da nichts Unwiederbringliches drinsteckt, lohnt sich der Aufwand vermutlich nicht, sondern es geht wohl am schnellsten, die Januar-Datei zu nehmen und die Buchungen aus den Bankabrechnungen nachzutragen.”

Ok, dann weiß ich ja was mein Wochenendejob ist - lernen durch Schmerz.
Das passiert mir sicherlich nicht nochmals :slight_smile:

“Das ist alles ein bisschen seltsam. :thinking: Grundsätzlich sind aber alle Arten von Netzlaufwerken, Cloud-Anbindungen usw. empfindlich gegen Störungen. Wenn du in diesem Thread blätterst, wirst du sehen, dass fast alle Klagen über plötzlichen Datenverlust solche Systeme betreffen”

Ich kann Dir nur zustimmen, das ist wirklich seltsam. Nutze PP seit Jahren problemlos und seit letzten Juli auch problemlos mit der Ablage der Dateien in der Cloud.
Da ich von zwei Standorten auf die Daten zugreifen muss/will, bleibt mir leider keine andere - einigermaßen komfortable - Wahl.
Ich werde manuell nachtragen und dann zusehen, dass konsequent mindestens einmal pro Monat das Backup zuverlässig läuft.