[Building Sakai] is anyone using Samigo auto submit?

Neal Caidin nealcaidin at sakaifoundation.org
Fri Feb 15 12:36:11 PST 2013


Hi All,

Is there a Jira for this one?

Thanks,
Neal

On Feb 15, 2013, at 2:06 PM, Karen Tsao <ktsao at stanford.edu> wrote:

> Hi Charles,
> 
> Actually we just notice the performance issue around two weeks ago. We are going to add one more condition to the query:
> 
> sam_assessmentgrading_t.isautosubmit <> 1
> 
> I need more testing but I think this should increase the performance. 
> 
> We implemented this as Quartz job because we expected it to run for a while. However, at Stanford, the Quartz job doesn't take that long. Do you have most data with SAM_PUBLISHEDACCESSCONTROL_T.autosubmit = 1? As it is default to 0, do you think this change is made by instructors purposely or your admin turn auto submission on in the default template (so all the assessments created with auto submission =1, but instructors might not actually need it)? We only have small portion of assessments with auto submission on. 
> 
> But, anyway, I think my above change should improve the performance. I will let you know when I am done.
> 
> Thanks,
> Karen
> 
> 
> On Fri, Feb 15, 2013 at 5:10 AM, Hedrick Charles <hedrick at rutgers.edu> wrote:
> There's an option in Samigo to auto submit saved assessments at the due date. Is anyone using it? I tried turning it on, but the Quartz job to do the submit has been running for more than 12 hours so far. That might be OK if that's only the first time, but I see no reason to think it will do better next time. But it looks to me like it will process the same very large set of submissions each time:
> 
> The test checks for 
>     current time >= retract date
>     status not in 4,5
>     autosubmit = 1
> 
> It shouldn't do anything unless forgrade != 1, and submitting sets it to 1, so it doesn't look like it will actually process anything twice, but it looks to me like each time it runs it will continue look at a huge number of assessments. In a system of our size I wonder whether this is practical.
> 
> Here's a backtrace of what it's doing now. It looks to me like to be practical this job may need to be recoded in SQL, not hibernate.
> Main display
> 
> 
> "QuartzScheduler_Worker-1" Id=27 RUNNABLE
> 
> java.lang.Class.getInterfaces(Native Method)
> org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:27)
> org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:38)
> org.hibernate.engine.EntityEntry.requiresDirtyCheck(EntityEntry.java:221)
> org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:118)
> org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
> org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
> org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
> org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:970)
> org.hibernate.impl.SessionImpl.list(SessionImpl.java:1115)
> org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
> org.sakaiproject.tool.assessment.facade.ItemFacadeQueries$7.doInHibernate(ItemFacadeQueries.java:590)
> org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
> org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
> org.sakaiproject.tool.assessment.facade.ItemFacadeQueries.getItemTextId(ItemFacadeQueries.java:593)
> sun.reflect.GeneratedMethodAccessor10376.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> $Proxy98.getItemTextId(Unknown Source)
> org.sakaiproject.tool.assessment.services.ItemService.getItemTextId(ItemService.java:226)
> org.sakaiproject.tool.assessment.facade.AssessmentGradingFacadeQueries.saveItemGradingData(AssessmentGradingFacadeQueries.java:3155)
> org.sakaiproject.tool.assessment.facade.AssessmentGradingFacadeQueries.completeItemGradingData(AssessmentGradingFacadeQueries.java:3128)
> org.sakaiproject.tool.assessment.facade.AssessmentGradingFacadeQueries.autoSubmitAssessments(AssessmentGradingFacadeQueries.java:2845)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> $Proxy102.autoSubmitAssessments(Unknown Source)
> org.sakaiproject.tool.assessment.services.GradingService.autoSubmitAssessments(GradingService.java:2003)
> org.sakaiproject.tool.assessment.services.AutoSubmitAssessmentsJob.execute(AutoSubmitAssessmentsJob.java:84)
> org.sakaiproject.component.app.scheduler.jobs.SpringJobBeanWrapper.execute(SpringJobBeanWrapper.java:70)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:534)
> Main display                                   Kill thread
> 
> 
> _______________________________________________
> 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 HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20130215/9cdc6e0b/attachment.html 


More information about the sakai-dev mailing list