[Building Sakai] Transaction problem when copying site

Carl Nettelblad cnettel at tele2.se
Wed Nov 11 01:48:57 PST 2009


Hello,

 

We are using the SiteService to copy sites programmatically from an external
application. This is done within a common JTA transaction, as the
information in the Sakai DB should ideally be kept consistent with our
application-specific DB.

 

This works fine for some sites with tools, but when we tested on a site
using Samigo, we got the following stack trace:

org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:
could not execute query; uncategorized SQLException for SQL [select
gradebook0_.ID as ID310_, gradebook0_.VERSION as VERSION310_,
gradebook0_.GRADEBOOK_UID as GR

GRADE_MAPPING_ID as SELECTED5_310_, gradebook0_.ASSIGNMENTS_DISPLAYED as
ASSIGNME6_310_, gradebook0_.COURSE_GRADE_DISPLAYED as COURSE7_310_,
gradebook0_.ALL_ASSIGNMENTS_ENTERED as ALL8_310_, gradebook0_.LOCKED as
LOCKED310_, gradebook

RY11_310_ from GB_GRADEBOOK_T gradebook0_ where
gradebook0_.GRADEBOOK_UID=?]; SQL state [null]; error code [0]; You cannot
set read only during a managed transaction!; nested exception is
java.sql.SQLException: You cannot set read onl

Caused by:

java.sql.SQLException: You cannot set read only during a managed
transaction!

        at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.setJdbcReadOnly
(BaseWrapperManagedConnection.java:519)

        at
org.jboss.resource.adapter.jdbc.WrappedConnection.setReadOnly(WrappedConnect
ion.java:88)

        at
org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy$LazyConnec
tionInvocationHandler.getTargetConnection(LazyConnectionDataSourceProxy.java
:372)

        at
org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy$LazyConnec
tionInvocationHandler.invoke(LazyConnectionDataSourceProxy.java:338)

        at $Proxy199.prepareStatement(Unknown Source)

        at
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java
:505)

        at
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java
:423)

        at
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.jav
a:139)

        at
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)

        at org.hibernate.loader.Loader.doQuery(Loader.java:673)

        at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.ja
va:236)

        at org.hibernate.loader.Loader.doList(Loader.java:2220)

        at
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)

        at org.hibernate.loader.Loader.list(Loader.java:2099)

        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)

        at
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)

        at
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)

        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)

        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

        at
org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(Hibern
ateTemplate.java:849)

        at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTempla
te.java:372)

        at
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.
java:840)

        at
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.
java:836)

        at
org.sakaiproject.component.gradebook.BaseHibernateManager.isGradebookDefined
(BaseHibernateManager.java:98)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)

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

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

        at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopU
tils.java:296)

        at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
(ReflectiveMethodInvocation.java:177)

        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)

        at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:107)

        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:166)

        at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:204)

        at $Proxy209.isGradebookDefined(Unknown Source)

        at
org.sakaiproject.tool.gradebook.facades.sakai2impl.GradebookEntityProducer.c
ontextUpdated(GradebookEntityProducer.java:83)

        at
org.sakaiproject.site.impl.BaseSiteService.enableRelated(BaseSiteService.jav
a:1875)

        at
org.sakaiproject.site.impl.BaseSiteService.doSave(BaseSiteService.java:890)

        at
org.sakaiproject.site.impl.BaseSiteService.save(BaseSiteService.java:807)

 

 

This is somewhat surprising. I realize that this is an unsupported
configuration, but any input would be welcome. The Sakai version used is
2.6.0, with the services running within the Catalina/Tomcat fork in JBoss.

 

Regards,

Carl Nettelblad

Uppsala University

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20091111/9aa6d027/attachment.html 


More information about the sakai-dev mailing list