[Building Sakai] Gradebook bug reports after MySQL upgrade

Stephen Marquard stephen.marquard at uct.ac.za
Tue May 4 00:41:15 PDT 2010


This has been a persistent low-frequency bug in our environment too. We'd love it if someone would fix it.

My interpretation has always been that it came from duplicate form submissions (e.g. clicking twice on the form button).

Regards
Stephen

>>> Bryan Bakotich <bakotibj at plu.edu> 5/4/2010 12:20 AM >>>
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


 
______________________________________________________________________________________________ 

UNIVERSITY OF CAPE TOWN 

This e-mail is subject to the UCT ICT policies and e-mail disclaimer published on our website at http://www.uct.ac.za/about/policies/emaildisclaimer/ or obtainable from +27 21 650 4500. This e-mail is intended only for the person(s) to whom it is addressed. If the e-mail has reached you in error, please notify the author. If you are not the intended recipient of the e-mail you may not use, disclose, copy, redirect or print the content. If this e-mail is not related to the business of UCT it is sent by the sender in the sender's individual capacity.

_____________________________________________________________________________________________________
 


More information about the sakai-dev mailing list