Basically MySQL is broken, it shouldn't ever close a connection that's
open.
Various people have tried various workarounds. But using autoReconnect
is not always semantically safe (you lose non-committed stuff).
Jackrabbit has implemented a workaround in 1.4 (https://issues.apache.org/jira/browse/JCR-940
), but Nuxeo 5.1.6 uses 1.3.3.
See also http://wiki.magnolia-cms.com/display/WIKI/MySQL+Persistence
for instance.
Your options are:
- upgrade the MySQL timeout to more that the default (8h), to avoid
losing connections,
- restart Nuxeo from time to time, before the MySQL timeout,
- try to upgrade to Jackrabbit 1.4.* in Nuxeo 5.1.6, but there will
probably be Nuxeo source code changes to do,
- upgrade Nuxeo to 5.2.RC1, but there are quite a number of other
changes in Nuxeo so it's not a light operation,
- ditch MySQL and use a real database.
Florent
On 23 Apr 2009, at 11:39, Enrique Perez wrote:
Thanks for your answer, Florent.
I also tried with the configuration you say. I configure it with the
following line:
<param name="url" value="jdbc:mysql://localhost/mydatabase?
autoReconnect=true"/>
But it still fails. Is the previous line correct or I have to add
something like the following one?:
<param name="autoReconnect" value="true"/>
Thanks in advance.
Florent Guillaume wrote:
Hi,
The error (simplified below) is a Jackrabbit error. So the
connection parameters to modify are those of the Jackrabbit
configuration file.
For a blank server the file is in config/repository-config.xml (or
config/default-repository-config.xml depending on how you named
it). Once the database is created it lives in server/default/data/
NXRuntime/repos/default/default.xml. It's the <PersistenceManager>
section.
The <connection-url> you mention is for a JDBC datasource, but
that's not what Jackrabbit uses for configuration.
See http://www.google.com/search?q=jackrabbit+mysql+autoReconnect
for more.
Florent
On 22 Apr 2009, at 09:18, Enrique Perez wrote:
Hi all,
I have a Nuxeo instance (5.1.6-2) using a MySql database. When I
start the server it works fine, but if I try to upload a file
after a couple of days it crashes. It seems like if the connection
with the database is closed.
I try with the autoReconnect property:
<connection-url>jdbc:mysql://localhost/mydatabase?
relaxAutoCommit
=true&emulateLocators=true&autoReconnect=true</connection-
url>
But the platform still crashes.
The exception I get when I upload a file is:
org.nuxeo.ecm.core.api.ClientException
org.nuxeo.ecm.core.api.WrappedException: Exception:
org.nuxeo.ecm.core.api.ClientException. message:
org.nuxeo.ecm.core.api.WrappedException: Exception:
org.nuxeo.ecm.core.api.ClientException. message: Failed to save
session
org.nuxeo.ecm.core.api.WrappedException
Exception: com.mysql.jdbc.CommunicationsException. message: The
last packet successfully received from the server was88772
milliseconds ago.The last packet sent successfully to the server
was 88772 milliseconds ago, which is longer than the server
configured value of 'wait_timeout'. You should consider either
expiring and/or testing connection validity before use in your
application, increasing the server configured values for client
timeouts, or using the Connector/J connection property
'autoReconnect=true' to avoid this problem.
com
.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:
1070)
com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3270)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1932)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:
4916)
org
.apache
.jackrabbit
.core
.persistence
.bundle
.BundleDbPersistenceManager.store(BundleDbPersistenceManager.java:
484)
org.apache.jackrabbit.core.state.SharedItemStateManager
$Update.end(SharedItemStateManager.java:688)
org
.apache
.jackrabbit
.core
.state.SharedItemStateManager.update(SharedItemStateManager.java:
855)
org
.apache
.jackrabbit
.core
.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
org
.apache
.jackrabbit
.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
org
.apache
.jackrabbit
.core
.state.LocalItemStateManager.update(LocalItemStateManager.java:302)
org
.apache
.jackrabbit
.core
.state.SessionItemStateManager.update(SessionItemStateManager.java:
306)
org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1240)
org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:849)
org.nuxeo.ecm.core.repository.jcr.JCRSession.save(JCRSession.java:
146)
org.nuxeo.ecm.core.api.AbstractSession.save(AbstractSession.java:
1457)
--
Florent Guillaume, Head of R&D, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm
To unsubscribe, go to http://lists.nuxeo.com/mailman/options/ecm