mschmidt
I'm new here

de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed

Jump to solution

Hallo zusammen,

ich habe einen Export unseres Live Projektes durchgeführt und wollte es auf dem Q-Server wieder importieren.

Leider bekomme ich beim Importieren folgende Fehlermeldung:

de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed

FirstSpirit Version: 4.2.507.71601

26.07.2016 12:37:28.328 Importing presentation channels

26.07.2016 12:37:28.328 Importing annotations

26.07.2016 12:37:28.330 Importing conversion tables

26.07.2016 12:37:30.094 Error importing project -- Q5 -- - de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed (at line 2, column 48918878)

26.07.2016 12:37:30.094 FSVersion=4.2.507.71601#2272;JDK=1.6.0_38 64bit Sun Microsystems Inc.;OS=Linux 2.6.18-308.8.2.el5 amd64;Date=26.07.2016 12:37:30

de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed (at line 2, column 48918878)

        at de.espirit.firstspirit.parser.impl.XmlPullParser.readNode(XmlPullParser.java:289)

          at de.espirit.firstspirit.parser.impl.XmlPullParser._readToken(XmlPullParser.java:221)

          at de.espirit.firstspirit.parser.impl.XmlPullParser.readToken(XmlPullParser.java:183)

          at de.espirit.firstspirit.server.export.importhandler.TableDataHandler.analyseTableRowCount(TableDataHandler.java:161)

          at de.espirit.firstspirit.server.export.importhandler.TableDataHandler.analyse(TableDataHandler.java:64)

          at de.espirit.firstspirit.server.export.ProjectImporter.call(ProjectImporter.java:343)

          at de.espirit.firstspirit.server.export.ProjectImporter.call(ProjectImporter.java:65)

          at de.espirit.firstspirit.server.action.ServerActionManagerImpl$ServerActionCallableWrapper.call(ServerActionManagerImpl.java:415)

          at de.espirit.firstspirit.server.action.ServerActionManagerImpl$ServerActionCallableWrapper.call(ServerActionManagerImpl.java:396)

          at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:521)

          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

          at java.util.concurrent.FutureTask.run(FutureTask.java:138)

          at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

          at java.util.concurrent.FutureTask.run(FutureTask.java:138)

          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

          at java.lang.Thread.run(Thread.java:662)

          at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)

Kennt jemand dieses Problem und kann mir einen Tipp geben, woran dies liegen könnte und vielleicht auch, wie dieses zu beheben ist?

Danke und viele Grüße

Marco

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Marco,

die Aussage von Serkan ist im Prinzip richtig (und bei großen Datenbanktabellen auch das empfohlene Vorgehen).

Falls dieser Weg nicht möglich ist (weil die Datenbank geändert werden soll, weil die Daten im Export komplett sein sollen, ...), kann der Export normalerweise auch mit FirstSpirit Mitteln duchgeführt werden.

Ursache des Problems ist, dass beim Export die Verbindung zur Datenbank gekappt wurde, da der Zugriff zu lange dauert.

Lösung ist es somit, dieses Timeout zu erhöhen.

Dazu einfach folgendes tun:

- Server und Projekt Konfiguration mit dem Benutzer Admin öffnen

- Unter Server/Eigenschaften->Datenbanken die entsprechende Konfiguration bearbeiten

- Für die Parameter

jdbc.POOLTIMEOUT=

jdbc.CONNECTIONTIMEOUT=

jeweils einen Wert (in Sekunden!) eintragen, der größer ist als die Dauer des Exportes. Sind diese Parameter noch nicht vorhanden, so müssen diese hinzugefügt werden.

Dabei sollte man berücksichtigen, dass der Export im Fehlerfall schneller ausgeführt wird, da nicht die kompletten Datenbankinhalte transferiert werden. Ein entsprechender Sicherheitspuffer sollte also eingeplant werden.

Natürlich müssen auf Datenbankseite die Timeouts auch entsprechend hoch sein, da ansonsten die Verbindung von dort unterbrochen wird, was zum selben Ergebnis führt.

Viele Grüße aus Dortmund,

  Holger

View solution in original post

0 Kudos
2 Replies
sbalkan
I'm new here

Hallo Marco,

das Problem tritt auf, wenn Projekte inkl. Datenquellen-Inhalte exportiert werden. Unsere Erfahrungen haben gezeigt, dass der Export von großen Tabellen, in unserem Fall ca. 30.000 Datensätze (gezählt ohne Versionshistorie), schon dieses Problem verursachen kann.

Falls Ihr euer Projekt von P nach Q transportieren möchtet und die Datenquellen-Inhalte in einer externen DB (Oracle,MySQL,Postgres,..) vorliegen habt, exportiert das Projekt ohne Datenquellen-Inhalte. Das DB-Schema der externen DB solltet Ihr entsprechend klonen und beim Projektimport das Projekt auf das geklonte Schema mappen.

In FS5.2 sollte dieses Problem hoffentlich der Vergangenheit angehören. Testen konnte ich dies allerdings noch nicht Smiley Happy

Ich hoffe ich konnte Dir weiter helfen.

Beste Grüße

Serkan

0 Kudos
hoebbel
Crownpeak employee

Hallo Marco,

die Aussage von Serkan ist im Prinzip richtig (und bei großen Datenbanktabellen auch das empfohlene Vorgehen).

Falls dieser Weg nicht möglich ist (weil die Datenbank geändert werden soll, weil die Daten im Export komplett sein sollen, ...), kann der Export normalerweise auch mit FirstSpirit Mitteln duchgeführt werden.

Ursache des Problems ist, dass beim Export die Verbindung zur Datenbank gekappt wurde, da der Zugriff zu lange dauert.

Lösung ist es somit, dieses Timeout zu erhöhen.

Dazu einfach folgendes tun:

- Server und Projekt Konfiguration mit dem Benutzer Admin öffnen

- Unter Server/Eigenschaften->Datenbanken die entsprechende Konfiguration bearbeiten

- Für die Parameter

jdbc.POOLTIMEOUT=

jdbc.CONNECTIONTIMEOUT=

jeweils einen Wert (in Sekunden!) eintragen, der größer ist als die Dauer des Exportes. Sind diese Parameter noch nicht vorhanden, so müssen diese hinzugefügt werden.

Dabei sollte man berücksichtigen, dass der Export im Fehlerfall schneller ausgeführt wird, da nicht die kompletten Datenbankinhalte transferiert werden. Ein entsprechender Sicherheitspuffer sollte also eingeplant werden.

Natürlich müssen auf Datenbankseite die Timeouts auch entsprechend hoch sein, da ansonsten die Verbindung von dort unterbrochen wird, was zum selben Ergebnis führt.

Viele Grüße aus Dortmund,

  Holger

0 Kudos