kloe
I'm new here

externe MySQL - Connection failed (wegen Server-Timeout?)

In unserem Projekt existiert eine MySQL-DB, die von unserem Frontend gefüttert wird. DIese soll rein zur Ansicht (Auswertung der Inhalte) im CMS eingebunden werden. Die Einbindung erfolgt analog zur Dokumentation und funktioniert soweit prima.

Leider bekommen wir beim Zugriff regelmässig eine Runtime Exception

cannot shutdown, close on connection failed - error code: 0, message: Communications link failure during rollback(). Transaction resolution unknown

Diese tritt anscheined beim Ablauf des server-seitigen Timeouts von 60s (vorgegeben durch die Haus-IT) auf.

Ein einfaches Reload behebt das Problem sofort. Nach der nächsten abgelaufenen Minute steht der Benutzer allerdings wieder vor der Fehlermeldung.

Wir verwenden derzeit doe folgende Konfiguration (mit Experiment des autoReconnect-URL-Parameters, der anscheinend nix bringt):

jdbc.CONNECTIONTIMEOUT=55

jdbc.DRIVER=com.mysql.jdbc.Driver

jdbc.PASSWORD=---------------

jdbc.POOLTIMEOUT=55

jdbc.SCHEMA=mysql_db

jdbc.URL=jdbc:mysql://mysqlhost:3306/mysql_db?autoReconnect=true

jdbc.USER=mysql_user

jdbc.layerclass=de.espirit.or.impl.mysql.MySQLLayer

Hier noch der komplette Stacktrace der Fehlermeldung:

java.lang.RuntimeException: cannot shutdown, close on connection failed - error code: 0, message: Communications link failure during rollback(). Transaction resolution unknown.

    at de.espirit.or.impl.connection.ConnectionInvocationHandler.shutdown(ConnectionInvocationHandler.java:94)

    at de.espirit.or.impl.connection.ConnectionInvocationHandler.invoke(ConnectionInvocationHandler.java:43)

    at $Proxy15.shutdown(Unknown Source)

    at de.espirit.or.impl.connection.DBConnectionManager.getConnection(DBConnectionManager.java:300)

    at de.espirit.or.impl.connection.DBConnectionManager.getConnection(DBConnectionManager.java:209)

    at de.espirit.or.impl.AbstractSessionHandler.executeQuery(AbstractSessionHandler.java:236)

    at de.espirit.firstspirit.content.ContentManagerImpl.executeQuery(ContentManagerImpl.java:535)

    at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:91)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.handle(ManagerCall.java:67)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:553)

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

    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:441)

    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)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown.

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

    at com.mysql.jdbc.Util.getInstance(Util.java:386)

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)

    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4757)

    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4352)

    at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1601)

    at de.espirit.or.impl.connection.ConnectionInvocationHandler.shutdown(ConnectionInvocationHandler.java:92)

    at de.espirit.or.impl.connection.ConnectionInvocationHandler.invoke(ConnectionInvocationHandler.java:43)

    at $Proxy15.shutdown(Unknown Source)

    at de.espirit.or.impl.connection.DBConnectionManager.getConnection(DBConnectionManager.java:300)

    at de.espirit.or.impl.connection.DBConnectionManager.getConnection(DBConnectionManager.java:209)

    at de.espirit.or.impl.AbstractSessionHandler.executeQuery(AbstractSessionHandler.java:236)

    at de.espirit.firstspirit.content.ContentManagerImpl.executeQuery(ContentManagerImpl.java:535)

    at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:91)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.handle(ManagerCall.java:67)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:553)

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

    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:441)

    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 de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:372)

    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)

    at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:52)

    at de.espirit.firstspirit.server.$Proxy33.executeQuery(Unknown Source)

    at de.espirit.firstspirit.store.access.templatestore.SessionHandlerImpl.executeQuery(SessionHandlerImpl.java:73)

    at de.espirit.or.impl.AbstractSession.executeQuery(AbstractSession.java:248)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentTable.execute(ContentTable.java:719)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentTable.execute(ContentTable.java:711)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentTable.refresh(ContentTable.java:615)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentViewComponent.refreshTable(ContentViewComponent.java:356)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentViewComponent.<init>(ContentViewComponent.java:191)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentViewComponent.<init>(ContentViewComponent.java:136)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.CSContentView$3.<init>(CSContentView.java:349)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.CSContentView.getCurrentViewComponent(CSContentView.java:338)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.CSContentView.constructComponent(CSContentView.java:230)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getViewableComponent(AbstractAccessTabbedView.java:338)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getComponent(AbstractAccessTabbedView.java:193)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.access$100(AbstractAccessTabbedView.java:50)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$1.tabSelected(AbstractAccessTabbedView.java:152)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel$2.invoke(AbstractAccessTabbedView.java:617)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel$2.invoke(AbstractAccessTabbedView.java:616)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.notifyListeners(AbstractAccessTabbedView.java:669)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.notifyTabSelected(AbstractAccessTabbedView.java:615)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.selectTab(AbstractAccessTabbedView.java:605)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.select(AbstractAccessTabbedView.java:558)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getComponent(AbstractAccessTabbedView.java:232)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.CSContentView.getComponent(CSContentView.java:631)

    at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.getView(AbstractGuiStoreElement.java:1071)

    at de.espirit.firstspirit.client.gui.tabbing.ElementTabConfiguration$ElementView.getViewComponent(ElementTabConfiguration.java:261)

    at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.getRealComponent(TabContentView.java:398)

    at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.call(TabContentView.java:371)

    at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.call(TabContentView.java:251)

    at de.espirit.firstspirit.client.gui.util.GuiUtil$CallableWrapper.call(GuiUtil.java:1508)

    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

    at java.util.concurrent.FutureTask.run(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

5 Replies
klein
Crownpeak employee

Hallo,

ich habe gerade dieses offene Posting entdeckt und möchte nachfragen, ob meine letzte Antwort in dem entsprechenden Helpdesk-Ticket evtl. doch das Problem doch gelöst hat?

Das würde den anderen Community-Usern zukünftig evtl. auch helfen.

Gruß,

Walter.

############################################

Bitte fügen Sie in den Layereigenschaften noch folgende Zeilen hinzu:

--------------------

jdbc.CHECKSTATEMENT=select * from TABLE_NAME

jdbc.CONNECTIONRETRY=3

jdbc.CONNECTIONRETRYCYCLE=500

--------------------

wobei Sie TABLE_NAME durch einen gültigen Tabellennamen (ggf. mit dem Schemanamen davor, also p111_222.mytablename) ersetzen, z.B. durch "transaction_counter".

Spätestens nach einem FS-Serverneustart müsste die obere Abfrage Ihre DB "warmhalten", so dass die Verbindung zum FS-Server von der DB nicht geschlossen wird.

############################################

0 Kudos

Leider hat der vielversprechende Ansatz nicht geholfen und ich hatte nicht die Zeit gefunden, dass Ticket zu reaktivieren (wir hatten einen Launch und die dabei nie zu vermeidende Anstrengung).

Kann es sein, dass der Workaround vielleicht einfach nicht mit der etwas älteren FS4.2-Version (468) funktioniert? Ich hoffe, das Problem demnächst auf unserem FS5-System gegentesten zu können.

0 Kudos

Hallo Stefan,

habt ihr das Problem immer noch?

Falls ja, versuch doch mal die beiden Parameter jdbc.POOLTIMEOUT und jdbc.CONNECTIONTIMEOUT etwas runter, vielleicht auf 30.

Viele Grüße

Thorsten

0 Kudos

Hallo,

da es hier keine weitere Antwort auf Thorstens Frage gab, vermute ich, dass sich die Frage inzwischen gelöst hat und markiere sie daher als beantwortet.

Sollten dennoch weitere Fragen bestehen, bitte noch einmal melden.

Viele Grüße

Michaela

0 Kudos

Hi zusammen,

das Problem besteht weiterhin, die angesprochenen Parameter wurden bereits in Zusammenarbeit mit dem Helpdesk diverse Male ausprobiert.

Im Moment werden Reloads als Workaround akzeptiert. Die Redakteure haben halt die Minute, um die richtige Umfrage auszuwählen.

Der Thread kann gerne geschlossen werden oder so, aber bitte nicht als beantwortet.

Viele Grüße

Stefan

0 Kudos