You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "M.Fatih Ozceylan (JIRA)" <ji...@apache.org> on 2007/05/13 09:03:15 UTC

[jira] Created: (JCR-913) DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception

DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception
-----------------------------------------------------------------------------------------

                 Key: JCR-913
                 URL: https://issues.apache.org/jira/browse/JCR-913
             Project: Jackrabbit
          Issue Type: Bug
    Affects Versions: 1.3
         Environment: Windows Vista/Tomcat  5.5.17/Liferay/MySql 5.0.24, + mysql connector jar coming with liferay 4.3
            Reporter: M.Fatih Ozceylan
            Priority: Minor


When I tried to activate clustering with adding the following XML to repository.xml, 

    <Cluster id="node_1" syncDelay="5">
		<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
			<param name="revision" value="${rep.home}/revision"/>
			<param name="driver" value="com.mysql.jdbc.Driver"/>
			<param name="url" value="jdbc:mysql://localhost/jcr"/>
			<param name="user" value="userX"/>
			<param name="password" value="passWordC"/>
			<param name="schema" value="mysql"/>
			<param name="schemaObjectPrefix" value="J_C_"/>
		</Journal>
    </Cluster>

Databse Journal threw the following exception:

....
Caused by: javax.jcr.RepositoryException: Unable to initialize connection.: Unable to initialize connection.
        at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:677)
        at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:276)
        at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
        at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
        at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
        at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
        at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.createSession(JCRFactoryImpl.java:71)
        at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:53)
        at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:57)
        at com.liferay.documentlibrary.util.IndexerImpl.reIndex(IndexerImpl.java:258)
        ... 17 more
Caused by: org.apache.jackrabbit.core.cluster.ClusterException: Unable to initialize connection.
        at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:218)
        at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:189)
        at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:674)
        ... 26 more
Caused by: java.sql.SQLException: Can't call commit when autocommit=true
        at com.mysql.jdbc.Connection.commit(Connection.java:2161)
        at org.apache.jackrabbit.core.journal.DatabaseJournal.checkSchema(DatabaseJournal.java:437)
        at org.apache.jackrabbit.core.journal.DatabaseJournal.init(DatabaseJournal.java:168)
        at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:213)
        ... 28 more

When I examined the source code of the release jackrabbit 1.3, I saw that the init() method for DatabaseJournal class is:

			...
			Class.forName(driver);
			con = DriverManager.getConnection(url, user, password);
			con.setAutoCommit(true);

			checkSchema();
			prepareStatements();
			...

and just before checkSchema() method's finally block:

			...
			// commit the changes
			con.commit();
			...

So, it seemed normal to see the mentioned exception. I just commented out the commit expression and continued my development. Am I missing something?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (JCR-913) DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception

Posted by "Ian Boston (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495377 ] 

Ian Boston commented on JCR-913:
--------------------------------


I had the same problem....  but changed 

con.setAutoCommit(true); 

to

con.setAutoCommit(false);

So that transactions still work.

 I have other problems..... with MySQL, so I could be wrong ?

> DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception
> -----------------------------------------------------------------------------------------
>
>                 Key: JCR-913
>                 URL: https://issues.apache.org/jira/browse/JCR-913
>             Project: Jackrabbit
>          Issue Type: Bug
>    Affects Versions: 1.3
>         Environment: Windows Vista/Tomcat  5.5.17/Liferay/MySql 5.0.24, + mysql connector jar coming with liferay 4.3
>            Reporter: M.Fatih Ozceylan
>            Priority: Minor
>
> When I tried to activate clustering with adding the following XML to repository.xml, 
>     <Cluster id="node_1" syncDelay="5">
> 		<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
> 			<param name="revision" value="${rep.home}/revision"/>
> 			<param name="driver" value="com.mysql.jdbc.Driver"/>
> 			<param name="url" value="jdbc:mysql://localhost/jcr"/>
> 			<param name="user" value="userX"/>
> 			<param name="password" value="passWordC"/>
> 			<param name="schema" value="mysql"/>
> 			<param name="schemaObjectPrefix" value="J_C_"/>
> 		</Journal>
>     </Cluster>
> Databse Journal threw the following exception:
> ....
> Caused by: javax.jcr.RepositoryException: Unable to initialize connection.: Unable to initialize connection.
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:677)
>         at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:276)
>         at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
>         at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
>         at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
>         at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
>         at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.createSession(JCRFactoryImpl.java:71)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:53)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:57)
>         at com.liferay.documentlibrary.util.IndexerImpl.reIndex(IndexerImpl.java:258)
>         ... 17 more
> Caused by: org.apache.jackrabbit.core.cluster.ClusterException: Unable to initialize connection.
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:218)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:189)
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:674)
>         ... 26 more
> Caused by: java.sql.SQLException: Can't call commit when autocommit=true
>         at com.mysql.jdbc.Connection.commit(Connection.java:2161)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.checkSchema(DatabaseJournal.java:437)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.init(DatabaseJournal.java:168)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:213)
>         ... 28 more
> When I examined the source code of the release jackrabbit 1.3, I saw that the init() method for DatabaseJournal class is:
> 			...
> 			Class.forName(driver);
> 			con = DriverManager.getConnection(url, user, password);
> 			con.setAutoCommit(true);
> 			checkSchema();
> 			prepareStatements();
> 			...
> and just before checkSchema() method's finally block:
> 			...
> 			// commit the changes
> 			con.commit();
> 			...
> So, it seemed normal to see the mentioned exception. I just commented out the commit expression and continued my development. Am I missing something?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (JCR-913) DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting resolved JCR-913.
-------------------------------

    Resolution: Fixed

Fixed as suggested in revisionn 541145. Thanks for reporting this!

For the record, the problem was the same as we saw earlier with bundle persistence in issue JCR-841.

> DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception
> -----------------------------------------------------------------------------------------
>
>                 Key: JCR-913
>                 URL: https://issues.apache.org/jira/browse/JCR-913
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: Windows Vista/Tomcat  5.5.17/Liferay/MySql 5.0.24, + mysql connector jar coming with liferay 4.3
>            Reporter: M.Fatih Ozceylan
>            Priority: Minor
>
> When I tried to activate clustering with adding the following XML to repository.xml, 
>     <Cluster id="node_1" syncDelay="5">
> 		<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
> 			<param name="revision" value="${rep.home}/revision"/>
> 			<param name="driver" value="com.mysql.jdbc.Driver"/>
> 			<param name="url" value="jdbc:mysql://localhost/jcr"/>
> 			<param name="user" value="userX"/>
> 			<param name="password" value="passWordC"/>
> 			<param name="schema" value="mysql"/>
> 			<param name="schemaObjectPrefix" value="J_C_"/>
> 		</Journal>
>     </Cluster>
> Databse Journal threw the following exception:
> ....
> Caused by: javax.jcr.RepositoryException: Unable to initialize connection.: Unable to initialize connection.
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:677)
>         at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:276)
>         at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
>         at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
>         at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
>         at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
>         at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.createSession(JCRFactoryImpl.java:71)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:53)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:57)
>         at com.liferay.documentlibrary.util.IndexerImpl.reIndex(IndexerImpl.java:258)
>         ... 17 more
> Caused by: org.apache.jackrabbit.core.cluster.ClusterException: Unable to initialize connection.
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:218)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:189)
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:674)
>         ... 26 more
> Caused by: java.sql.SQLException: Can't call commit when autocommit=true
>         at com.mysql.jdbc.Connection.commit(Connection.java:2161)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.checkSchema(DatabaseJournal.java:437)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.init(DatabaseJournal.java:168)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:213)
>         ... 28 more
> When I examined the source code of the release jackrabbit 1.3, I saw that the init() method for DatabaseJournal class is:
> 			...
> 			Class.forName(driver);
> 			con = DriverManager.getConnection(url, user, password);
> 			con.setAutoCommit(true);
> 			checkSchema();
> 			prepareStatements();
> 			...
> and just before checkSchema() method's finally block:
> 			...
> 			// commit the changes
> 			con.commit();
> 			...
> So, it seemed normal to see the mentioned exception. I just commented out the commit expression and continued my development. Am I missing something?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-913) DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-913:
------------------------------


Merged to the 1.3 branch in revision 544292.

> DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception
> -----------------------------------------------------------------------------------------
>
>                 Key: JCR-913
>                 URL: https://issues.apache.org/jira/browse/JCR-913
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: Windows Vista/Tomcat  5.5.17/Liferay/MySql 5.0.24, + mysql connector jar coming with liferay 4.3
>            Reporter: M.Fatih Ozceylan
>            Assignee: Jukka Zitting
>            Priority: Minor
>             Fix For: 1.3.1
>
>
> When I tried to activate clustering with adding the following XML to repository.xml, 
>     <Cluster id="node_1" syncDelay="5">
> 		<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
> 			<param name="revision" value="${rep.home}/revision"/>
> 			<param name="driver" value="com.mysql.jdbc.Driver"/>
> 			<param name="url" value="jdbc:mysql://localhost/jcr"/>
> 			<param name="user" value="userX"/>
> 			<param name="password" value="passWordC"/>
> 			<param name="schema" value="mysql"/>
> 			<param name="schemaObjectPrefix" value="J_C_"/>
> 		</Journal>
>     </Cluster>
> Databse Journal threw the following exception:
> ....
> Caused by: javax.jcr.RepositoryException: Unable to initialize connection.: Unable to initialize connection.
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:677)
>         at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:276)
>         at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
>         at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
>         at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
>         at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
>         at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.createSession(JCRFactoryImpl.java:71)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:53)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:57)
>         at com.liferay.documentlibrary.util.IndexerImpl.reIndex(IndexerImpl.java:258)
>         ... 17 more
> Caused by: org.apache.jackrabbit.core.cluster.ClusterException: Unable to initialize connection.
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:218)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:189)
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:674)
>         ... 26 more
> Caused by: java.sql.SQLException: Can't call commit when autocommit=true
>         at com.mysql.jdbc.Connection.commit(Connection.java:2161)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.checkSchema(DatabaseJournal.java:437)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.init(DatabaseJournal.java:168)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:213)
>         ... 28 more
> When I examined the source code of the release jackrabbit 1.3, I saw that the init() method for DatabaseJournal class is:
> 			...
> 			Class.forName(driver);
> 			con = DriverManager.getConnection(url, user, password);
> 			con.setAutoCommit(true);
> 			checkSchema();
> 			prepareStatements();
> 			...
> and just before checkSchema() method's finally block:
> 			...
> 			// commit the changes
> 			con.commit();
> 			...
> So, it seemed normal to see the mentioned exception. I just commented out the commit expression and continued my development. Am I missing something?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-913) DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-913:
------------------------------

      Component/s: core
    Fix Version/s: 1.3.1
         Assignee: Jukka Zitting

> DatabaseJournal.checkSchema generates "Cannot call commit when autocommit=true" Exception
> -----------------------------------------------------------------------------------------
>
>                 Key: JCR-913
>                 URL: https://issues.apache.org/jira/browse/JCR-913
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: Windows Vista/Tomcat  5.5.17/Liferay/MySql 5.0.24, + mysql connector jar coming with liferay 4.3
>            Reporter: M.Fatih Ozceylan
>         Assigned To: Jukka Zitting
>            Priority: Minor
>             Fix For: 1.3.1
>
>
> When I tried to activate clustering with adding the following XML to repository.xml, 
>     <Cluster id="node_1" syncDelay="5">
> 		<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
> 			<param name="revision" value="${rep.home}/revision"/>
> 			<param name="driver" value="com.mysql.jdbc.Driver"/>
> 			<param name="url" value="jdbc:mysql://localhost/jcr"/>
> 			<param name="user" value="userX"/>
> 			<param name="password" value="passWordC"/>
> 			<param name="schema" value="mysql"/>
> 			<param name="schemaObjectPrefix" value="J_C_"/>
> 		</Journal>
>     </Cluster>
> Databse Journal threw the following exception:
> ....
> Caused by: javax.jcr.RepositoryException: Unable to initialize connection.: Unable to initialize connection.
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:677)
>         at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:276)
>         at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
>         at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
>         at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
>         at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
>         at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.createSession(JCRFactoryImpl.java:71)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:53)
>         at com.liferay.portal.jcr.JCRFactoryUtil.createSession(JCRFactoryUtil.java:57)
>         at com.liferay.documentlibrary.util.IndexerImpl.reIndex(IndexerImpl.java:258)
>         ... 17 more
> Caused by: org.apache.jackrabbit.core.cluster.ClusterException: Unable to initialize connection.
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:218)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:189)
>         at org.apache.jackrabbit.core.RepositoryImpl.createClusterNode(RepositoryImpl.java:674)
>         ... 26 more
> Caused by: java.sql.SQLException: Can't call commit when autocommit=true
>         at com.mysql.jdbc.Connection.commit(Connection.java:2161)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.checkSchema(DatabaseJournal.java:437)
>         at org.apache.jackrabbit.core.journal.DatabaseJournal.init(DatabaseJournal.java:168)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.init(ClusterNode.java:213)
>         ... 28 more
> When I examined the source code of the release jackrabbit 1.3, I saw that the init() method for DatabaseJournal class is:
> 			...
> 			Class.forName(driver);
> 			con = DriverManager.getConnection(url, user, password);
> 			con.setAutoCommit(true);
> 			checkSchema();
> 			prepareStatements();
> 			...
> and just before checkSchema() method's finally block:
> 			...
> 			// commit the changes
> 			con.commit();
> 			...
> So, it seemed normal to see the mentioned exception. I just commented out the commit expression and continued my development. Am I missing something?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.