Problem beim Starten: „XML kann nicht geparst werden“

Das ist interessant, ich habe das Problem auch immer Mal wieder und nutze das gleiche Setting. Ich kann es damit aber nicht sicher reproduzieren. Was mir nur aufgefallen ist war, dass das XML Fortmat in der Sicht deutlich stabiler ist. Als ich es mit dem neuen binary Format probiert habe, habe ich innerhalb von einer Woche mehrfach das Problem gehabt…

1 Like

Lösung jetzt bei mir:

Es gibt zwei Verzeichnisse:

  1. Verzeichnis für die XML oder xml.zip Dateien → Hierfür eine Sync-Aussnahme konfiguriert
  2. Backup Verzeichnis → dieses wird gesynct

In PP unter Hilfe → Einstellungen → Allgemein → Backups → Haken bei Automatische Backups erstellen → dort “ausgewähltes Verzeichnis” → Backuppfad eintragen.

Keine Fehler mehr und ich habe meine Daten gesichert…

Gruß
Mala

Hmmm … dann können in dem Backup-Verzeichnis aber weiterhin die Probleme auftreten, oder? Falls also deine Festplatte kaputtgeht, musst du hoffen, dass das letzte Backup zufällig vollständig gesichert wurde.

1 Like

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?