[Building Sakai] Gradebook bug reports after MySQL upgrade

Bryan Bakotich bakotibj at plu.edu
Mon May 3 15:20:12 PDT 2010


Hi all,

We recently upgraded from MySQL 4.1 to 5.1 and ever since then we receive a
couple of the same bugs every day from various users trying to save grades
in the gradebook (see the stack trace below). It looks like it is related to
this jira, http://jira.sakaiproject.org/browse/SAK-10847 , which we saw a
much less frequently before the MySQL upgrade.

In each case when I talked to users that ran into the bug they said they
were entering grades for a gradebook item and saw this error upon trying to
submit the entered scores. They usually run into this bug once or twice and
then the submission finally goes through without generating the bug report.
Because of this I have not yet been able to reproduce the bug. Does anyone
have any ideas why this is happening? I am a little lost and could
definitely use a push in the right direction. Thanks.

-Bryan

org.sakaiproject.portal.api.
PortalHandlerException: org.sakaiproject.tool.api.ToolException: Exception
while invoking expression #{assignmentDetailsBean.processUpdateScores}
   at
org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:70)
caused by: org.sakaiproject.tool.api.ToolException: Exception while invoking
expression #{assignmentDetailsBean.processUpdateScores}
   at
org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
caused by: javax.servlet.ServletException: Exception while invoking
expression #{assignmentDetailsBean.processUpdateScores}
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
caused by: javax.faces.el.EvaluationException: Exception while invoking
expression #{assignmentDetailsBean.processUpdateScores}
   at javax.faces.component.UICommand.broadcast(UICommand.java:89)
caused by: org.springframework.dao.DataIntegrityViolationException: could
not insert: [org.sakaiproject.tool.gradebook.AssignmentGradeRecord]; nested
exception is org.hibernate.exception.ConstraintViolationException: could not
insert: [org.sakaiproject.tool.gradebook.AssignmentGradeRecord]
   at
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
caused by: org.hibernate.exception.ConstraintViolationException: could not
insert: [org.sakaiproject.tool.gradebook.AssignmentGradeRecord]
   at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
caused by:
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:
Duplicate entry '21736-0474a9e1-2a6c-4546-a3b9-ea798a3ad3e2' for key
'GRADABLE_OBJECT_ID'
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
   at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
   at
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
   at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)
   at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
   at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
   at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
   at
org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
   at
org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
   at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
   at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
   at
org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
   at
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
   at
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
   at
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
   at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
   at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
   at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
   at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
   at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
   at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
   at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
   at sun.reflect.GeneratedMethodAccessor2246.invoke(null:-1)
   at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at
org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1202)
   at $Proxy23.saveOrUpdate(null:-1)
   at
org.sakaiproject.tool.gradebook.business.impl.GradebookManagerHibernateImpl$7.doInHibernate(GradebookManagerHibernateImpl.java:706)
   at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
   at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
   at
org.sakaiproject.tool.gradebook.business.impl.GradebookManagerHibernateImpl.updateAssignmentGradeRecords(GradebookManagerHibernateImpl.java:735)
   at
org.sakaiproject.tool.gradebook.business.impl.GradebookManagerHibernateImpl.updateAssignmentGradeRecords(GradebookManagerHibernateImpl.java:2101)
   at
org.sakaiproject.tool.gradebook.business.impl.GradebookManagerHibernateImpl.updateAssignmentGradesAndComments(GradebookManagerHibernateImpl.java:917)
   at sun.reflect.GeneratedMethodAccessor5515.invoke(null:-1)
   at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy125.updateAssignmentGradesAndComments(null:-1)
   at
org.sakaiproject.tool.gradebook.ui.AssignmentDetailsBean.saveScores(AssignmentDetailsBean.java:463)
   at
org.sakaiproject.tool.gradebook.ui.AssignmentDetailsBean.processUpdateScores(AssignmentDetailsBean.java:454)
   at sun.reflect.GeneratedMethodAccessor18718.invoke(null:-1)
   at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at
org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at javax.faces.component.UICommand.broadcast(UICommand.java:89)
   at
javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:565)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.sakaiproject.tool.gradebook.ui.RoleFilter.doFilter(RoleFilter.java:145)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
   at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
   at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)
   at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
   at org.sakaiproject.jsf.util.JsfTool.dispatch(JsfTool.java:221)
   at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
   at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
   at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
   at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
   at
org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:479)
   at
org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
   at
org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:188)
   at
org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:93)
   at
org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:70)
   at
org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:616)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
   at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
   at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
   at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
   at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
   at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
   at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
   at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
   at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
   at java.lang.Thread.run(Thread.java:595)


-- 
Bryan Bakotich
Open Source Implementation Specialist
Digital Media Center, Information & Technology Services
Pacific Lutheran University
Tacoma, WA 98447-0013
Phone: 253-536-5021
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20100503/727f776c/attachment.html 


More information about the sakai-dev mailing list