[Building Sakai] Add Particicpants MySQL table lock

Jon Higham J.Higham at hull.ac.uk
Tue Feb 16 07:41:43 PST 2010


We're on Mysql 5.1.


Thanks

Jon

-----Original Message-----
From: sakai-dev-bounces at collab.sakaiproject.org
[mailto:sakai-dev-bounces at collab.sakaiproject.org] On Behalf Of Zhen
Qian
Sent: 16 February 2010 14:44
To: Jon Higham
Cc: Sakai-Dev
Subject: Re: [Building Sakai] Add Particicpants MySQL table lock


Jon:

What MySQL version are you using? There was a report from Charles
Hedrick
on MySQL 4.1 throwing "lock wait timeout" message during the initial
table
set up time, but moving to MySQL 5.0 solved the problem
(http://collab.sakaiproject.org/pipermail/sakai-dev/2009-June/002040.htm
l)

Thanks,

- Zhen

On Tue, 16 Feb 2010 14:14:41 -0000, "Jon Higham" <J.Higham at hull.ac.uk>
wrote:
> The only customised code around site-manage is some to prevent
> Instructors from deleting their own sites and hiding of the site
contact
> details, so I don't think that is the issue.
> 
> I will check DB load with our DB admin, who is on leave this week, but
> would be surprised if he hadn't mentioned high load.
> 
> My first thoughts were that it was linked to there being a large
number
> of users on the site (approx 580), but we can experience the problem
on
> small member sizes (12) and when adding or removing members
> individually.
> 
> I have also noticed that the Instructors adding users sometimes have 2
> sessions open, and perhaps trying to update membership simultaneously
on
> both, but again that doesn't appear to be the case.
> 
> I've also wondered it could be linked to us using web services to
> add/remove site members somehow interfering, but again I don't see why
> that would happen.
> 
> Could missing something on a conversion script cause the issue?
> 
> 
> Jon
> 
> 
> -----Original Message-----
> From: sakai-dev-bounces at collab.sakaiproject.org
> [mailto:sakai-dev-bounces at collab.sakaiproject.org] On Behalf Of
Stephen
> Marquard
> Sent: 16 February 2010 12:10
> To: Sakai-Dev; Jon Higham
> Subject: Re: [Building Sakai] Add Particicpants MySQL table lock
> 
> Lock wait timeouts are very unusual - it basically means other queries
> have locked one or more of the tables involved for update for greater
> than 50 seconds (unless your mysql settings for this are
non-standard).
> 
> Is your MySQL server under extreme load, or do you have any other
custom
> code or processes that is perhaps using these tables and not handling
> locking correctly?
> 
> Regards
> Stephen
> 
>>>> "Jon Higham" <J.Higham at hull.ac.uk> 2010/02/16 02:03 PM >>>
> We are running sakai 2.6 with MySQL. Occasionally, site instructors
> report that they have gone through the procedure (Site Info > Add
> Participants) to manually add users to their sites. No errors or
> warnings are given to the Instructor, but the users are not added.
This
> also occasionally occurs for removing users too.
> 
>  
> 
> Looking at the sakai_event table I can see a row showing
> site.upd.site.mbrshp, but this is not followed by site.upd. Later
> attempts, that eventually work for the Instructor, show a
> site.upd.site.mbrshp row followed by site.upd.
> 
>  
> 
> The logs for this happening are below. Looks like a lock on the table
> causing a timeout. Can anyone suggest what might be causing the lock?
> 
>  
> 
> Thanks
> 
>  
> 
> Jon Higham
> 
> IT Systems
> 
> University of Hull
> 
>  
> 
>  
> 
> 2010-02-14 08:50:14,888 [TP-Processor551] WARN
> org.sakaiproject.db.impl.BasicSqlService - Sql.dbWrite(): error code:
> 1205 sql: update SAKAI_REALM set PROVIDER_ID = ?,MAINTAIN_ROLE =
(select
> MAX(ROLE_KEY) from SAKAI_REALM_ROLE where ROLE_NAME = ?),CREATEDBY =
> ?,MODIFIEDBY = ?,CREATEDON = ?,MODIFIEDON = ? where ( REALM_ID = ? )
> binds:   Instructor admin ggshf 20081217141209000 20100214084923732
> /site/20239_0910S2 
> 
> java.sql.SQLException: Lock wait timeout exceeded; try restarting
> transaction
> 
>       at
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
> 
>       at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
> 
>       at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
> 
>       at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
> 
>       at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
> 
>       at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
> 
>       at
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
> 
>       at
>
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:
> 1761)
> 
>       at
>
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:20
> 46)
> 
>       at
>
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:19
> 64)
> 
>       at
>
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:19
> 49)
> 
>       at
>
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Delega
> tingPreparedStatement.java:102)
> 
>       at
>
org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:12
> 05)
> 
>       at
>
org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:10
> 39)
> 
>       at
>
org.sakaiproject.util.BaseDbFlatStorage.commitResource(BaseDbFlatStorage
> .java:855)
> 
>       at
>
org.sakaiproject.authz.impl.DbAuthzGroupService$DbStorage.saveTx(DbAuthz
> GroupService.java:1015)
> 
>       at
>
org.sakaiproject.authz.impl.DbAuthzGroupService$DbStorage$8.run(DbAuthzG
> roupService.java:986)
> 
>       at
>
org.sakaiproject.db.impl.BasicSqlService.transact(BasicSqlService.java:3
> 28)
> 
>       at
>
org.sakaiproject.authz.impl.DbAuthzGroupService$DbStorage.save(DbAuthzGr
> oupService.java:982)
> 
>       at
>
org.sakaiproject.authz.impl.BaseAuthzGroupService.completeSave(BaseAuthz
> GroupService.java:592)
> 
>       at
>
org.sakaiproject.authz.impl.BaseAuthzGroupService.save(BaseAuthzGroupSer
> vice.java:578)
> 
>       at
>
org.sakaiproject.site.tool.helper.participant.impl.SiteAddParticipantHan
> dler.addUsersRealm(SiteAddParticipantHandler.java:503)
> 
>       at
>
org.sakaiproject.site.tool.helper.participant.impl.SiteAddParticipantHan
> dler.processConfirmContinue(SiteAddParticipantHandler.java:591)
> 
>       at sun.reflect.GeneratedMethodAccessor11940.invoke(Unknown
Source)
> 
>       at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 
>       at java.lang.reflect.Method.invoke(Method.java:585)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:23)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:17)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:77)
> 
>       at
>
uk.org.ponder.reflect.ReflectiveCache.invokeMethod(ReflectiveCache.java:
> 141)
> 
>       at
>
uk.org.ponder.mapping.support.DARApplier.invokeBeanMethod(DARApplier.jav
> a:179)
> 
>       at
>
uk.org.ponder.rsf.state.support.RSVCApplier.invokeAction(RSVCApplier.jav
> a:218)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RSFActionHandler$1.run(RSFActionHand
> ler.java:189)
> 
>       at
>
uk.org.ponder.util.CollectingRunnableInvoker$1.run(CollectingRunnableInv
> oker.java:25)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper.lockUUPP(Bas
> icScopedAlterationWrapper.java:73)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper.lockUUPP(Bas
> icScopedAlterationWrapper.java:80)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper.invokeRunnab
> le(BasicScopedAlterationWrapper.java:64)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$FastClassBy
> CGLIB$$84f89202.invoke(<generated>)
> 
>       at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
> 
>       at
>
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedIntercept
> or.intercept(Cglib2AopProxy.java:623)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$EnhancerByC
> GLIB$$9392038c.invokeRunnable(<generated>)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$FastClassBy
> CGLIB$$84f89202.invoke(<generated>)
> 
>       at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
> 
>       at
>
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedIntercept
> or.intercept(Cglib2AopProxy.java:623)
> 
>       at
>
uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$EnhancerByC
> GLIB$$9392038c.invokeRunnable(<generated>)
> 
>       at
>
uk.org.ponder.util.CollectingRunnableInvoker$1.run(CollectingRunnableInv
> oker.java:29)
> 
>       at
>
uk.org.ponder.util.CollectingRunnableInvoker.invokeWrappers(CollectingRu
> nnableInvoker.java:22)
> 
>       at
>
uk.org.ponder.util.CollectingRunnableInvoker.invokeRunnable(CollectingRu
> nnableInvoker.java:14)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RSFActionHandler.handle(RSFActionHan
> dler.java:165)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RSFActionHandler$$FastClassByCGLIB$$
> e3b6899d.invoke(<generated>)
> 
>       at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
> 
>       at
>
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedIntercept
> or.intercept(Cglib2AopProxy.java:623)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RSFActionHandler$$EnhancerByCGLIB$$6
> 3cbf9f5.handle(<generated>)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RootHandlerBeanBase.handlePost(RootH
> andlerBeanBase.java:125)
> 
>       at
>
uk.org.ponder.rsf.processor.support.RootHandlerBeanBase.handle(RootHandl
> erBeanBase.java:82)
> 
>       at sun.reflect.GeneratedMethodAccessor5806.invoke(Unknown
Source)
> 
>       at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 
>       at java.lang.reflect.Method.invoke(Method.java:585)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:23)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:17)
> 
>       at
>
uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache
> .java:77)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl.createBean(RSACBeanLocato
> rImpl.java:553)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl.access$000(RSACBeanLocato
> rImpl.java:75)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl$1.run(RSACBeanLocatorImpl
> .java:449)
> 
>       at
>
uk.org.ponder.rsac.RSACErrorBridge.invokeRunnable(RSACErrorBridge.java:3
> 8)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl.createBean(RSACBeanLocato
> rImpl.java:447)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl.getLocalBean(RSACBeanLoca
> torImpl.java:348)
> 
>       at
>
uk.org.ponder.rsac.support.RSACBeanLocatorImpl.getBean(RSACBeanLocatorIm
> pl.java:379)
> 
>       at
>
uk.org.ponder.rsac.support.PerRequestInfo$1.locateBean(PerRequestInfo.ja
> va:49)
> 
>       at
>
uk.ac.cam.caret.sakai.rsf.servlet.ReasonableSakaiServlet.service(Reasona
> bleSakaiServlet.java:65)
> 
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:269)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:188)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatc
> her.java:679)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.processRequest(Applicatio
> nDispatcher.java:461)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDisp
> atcher.java:364)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispat
> cher.java:301)
> 
>       at
>
org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.help(ActiveT
> oolComponent.java:545)
> 
>       at
>
org.sakaiproject.cheftool.ToolServlet.sendToHelper(ToolServlet.java:652)
> 
>       at
> org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:212)
> 
>       at
>
org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPor
> tletPaneledAction.java:1014)
> 
>       at
> org.sakaiproject.cheftool.ToolServlet.doPost(ToolServlet.java:151)
> 
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> 
>       at
> org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56)
> 
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:269)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:188)
> 
>       at
> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:565)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:215)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:188)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatc
> her.java:679)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.processRequest(Applicatio
> nDispatcher.java:461)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDisp
> atcher.java:364)
> 
>       at
>
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispat
> cher.java:301)
> 
>       at
>
org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(Acti
> veToolComponent.java:475)
> 
>       at
>
org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(Skinnab
> leCharonPortal.java:1216)
> 
>       at
>
org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.j
> ava:188)
> 
>       at
>
org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.ja
> va:93)
> 
>       at
>
org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.j
> ava:70)
> 
>       at
>
org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCha
> ronPortal.java:1059)
> 
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> 
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:269)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:188)
> 
>       at
> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:616)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:215)
> 
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:188)
> 
>       at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> e.java:213)
> 
>       at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> e.java:174)
> 
>       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:1
> 74)
> 
>       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)
> 
> 2010-02-14 08:50:14,911 [TP-Processor551] WARN
> org.sakaiproject.db.impl.BasicSqlService - transact: rolling back:
> azg:/site/20239_0910S2
> 
> 2010-02-14 08:50:14,911 [TP-Processor551] WARN
> org.sakaiproject.db.impl.BasicSqlService - transact: failure:
> java.lang.RuntimeException: SqlService.dbWrite failure
> 
> 2010-02-14 08:50:14,912 [TP-Processor551] WARN
>
org.sakaiproject.site.tool.helper.participant.impl.SiteAddParticipantHan
> dler -
>
org.sakaiproject.site.tool.helper.participant.impl.SiteAddParticipantHan
> dler at 507d337b.addUsersRealm: SqlService.dbWrite failure
> realmId=/site/20239_0910S2
> 
> 2010-02-14 08:50:14,912 [TP-Processor551] INFO  PonderUtilCore -
> BeanCopy preserved to path siteAddParticipantHandler:
>
org.sakaiproject.site.tool.helper.participant.impl.SiteAddParticipantHan
> dler at 507d337b
> 
> 2010-02-14 08:50:14,913 [TP-Processor551] INFO  PonderUtilCore -
> BeanCopy saved 1 beans to token resultScope
> 
> 2010-02-14 08:50:14,913 [TP-Processor551] INFO  PonderUtilCore -
> Redirecting to
>
/portal/tool/849b094d-629c-474b-00ca-3acb5766d961?sakai.tool.helper.idMa
> in=done&panel=Main
> 
>  
> 
>  
> 
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
> 
> TO UNSUBSCRIBE: send email to
> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
> "unsubscribe"
_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to
sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
"unsubscribe"
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: not available
Url: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20100216/d4af2428/attachment.pl 


More information about the sakai-dev mailing list