Details
-
Type:
Bug
-
Status: Verified
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 20.0, 21.0 [Tentative], 22.0 [Tentative]
-
Fix Version/s: 20.2, 21.0 [Tentative], 22.0 [Tentative]
-
Component/s: WC Sakai Grader
-
Labels:None
-
20 status:Verified
-
Test Plan:
Description
After granting a resubmission to any user and then leaving the grader, you are no longer able to view the original submission using either the new grader (directly), nor the old grader. You'll find an exception in the logs similar to the following:
25-Jun-2020 09:53:15.902 WARN [http-nio-20013-exec-37] org.sakaiproject.cheftool.VelocityPortletPaneledAction.actionDispatch Exception calling method doGrade_submission java.lang.reflect.InvocationTargetException (Caused by java.lang.NumberFormatException: For input string: "undefined") java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.sakaiproject.cheftool.VelocityPortletPaneledAction.actionDispatch(VelocityPortletPaneledAction.java:767) at org.sakaiproject.cheftool.VelocityPortletPaneledAction.processAction(VelocityPortletPaneledAction.java:576) at org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:228) at org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPortletPaneledAction.java:1193) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:426) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:352) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:508) at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1500) at org.sakaiproject.portal.charon.handlers.SiteHandler.doToolBuffer(SiteHandler.java:1254) at org.sakaiproject.portal.charon.handlers.SiteHandler.bufferContent(SiteHandler.java:1088) at org.sakaiproject.portal.charon.handlers.SiteHandler.doSite(SiteHandler.java:499) at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:275) at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:163) at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:475) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:679) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NumberFormatException: For input string: "undefined" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:589) at java.lang.Long.parseLong(Long.java:631) at org.sakaiproject.assignment.tool.AssignmentAction.assignment_resubmission_option_into_state(AssignmentAction.java:13523) at org.sakaiproject.assignment.tool.AssignmentAction.putSubmissionInfoIntoState(AssignmentAction.java:9783) at org.sakaiproject.assignment.tool.AssignmentAction.doGrade_submission(AssignmentAction.java:9719) ... 55 more
Interestingly, if you have the box checked to use the new grader, and select a student from the list who has not been granted a resumbission, then use the navigation controls within the new grader to navigate to the student who was granted a resubmission, the stack trace does not occur. However, in that case the number of resubmissions granted is not reflected in the UI (this is reported in SAK-43854).
The only workaround the user has is to use the new Grader UI to view another student, then navigate to the affected student, deselect "Allow Resubmission", then "Save". This removes the bad data causing the NumberFormatException and you can then use both the new and old grader directly on this submission.
Gliffy Diagrams
Zeplin
Attachments
Issue Links
- is duplicated by
-
SAK-43790 Assignment - Allow resubmission for a single student through Grader results in not being able to view submission or resubmit
-
- RESOLVED
-