Uploaded image for project: 'Sakai'
  1. Sakai
  2. SAK-28022

Assignments problem in jdk 1.7.0_71 and 1.7.0_72

    Details

    • Type: Bug
    • Status: RESOLVED
    • Priority: Critical
    • Resolution: Incorporated
    • Affects Version/s: 2.9.3
    • Fix Version/s: None
    • Component/s: Assignments
    • Labels:
      None
    • Environment:
      Oracle 11g, Solaris x86, Tomcat 7.0.54

      Description

      After upgrading to jdk 1.7.0_71 some assignment ids are being corrupted when viewing the assignment list as an instructor or sakai admin or accessing the submitted assignment as the affected student, an NPE will occur because the assignment is not found.

      Looking at the logging, and in the instructor list at the 'grade' url link, I can see that the first character of the assignment id is incorrect, and is not even a hexidecimal digit.

      I added more logging to several files and can see that in places the assignmentID is correct, but in others it is not (patch with logging attached)

      I checked everywhere I could think of that the assignment id might be in the database and it is correct for the assignment and affected submissions.

      Downgrading Java to 1.7.0_65 resolved the problem. The assignment id was correct and no NPE occurred.

      Even though it is the assignment id that is corrupted, it is only happening for certain submissions. The other submissions in the assignment list up to that point have the correct assignment id. The list ends with an error when the incorrect one pops up, so there aren't any later ones.

      This is not happening, as far as I know, in most assignments either. I believe it is only affecting 4 or 5 course sites out of hundreds or thousands. I have not been able to pinpoint any commonality in the assignments or submissions that are affected so far.

      Here's an example from a grading link, where you can see both the correct (17a46ae0...) and incorrect (s7a46ae0...) assignmentId in the same URL:

      https://test-server/portal/tool/4cc206af-3442-4960-9784-7bf56ddd11ea?assignmentId=/assignment/a/72fcaf18-04bc-41bb-ad8a-a0253e12a4dd/17a46ae0-6ccc-45ce-b68f-00b39db78a52&submissionId=/assignment/s/72fcaf18-04bc-41bb-ad8a-a0253e12a4dd/s7a46ae0-6ccc-45ce-b68f-00b39db78a52/253252a1-7319-4540-9cb8-7518dd58ed6d&panel=Main&sakai_action=doGrade_submission

      The NPE from the instructor list, though I think it's just more a symptom of the assignment not being found by the wrong ID than the root of the problem:
      ===========================================================
      VelocityViewServlet : Error processing a template for path ''
      Invocation of method 'getStatus' in class org.sakaiproject.assignment.impl.BaseAssignmentService$BaseAssignmentSubmission threw exception java.lang.NullPointerException at /vm/assignment/chef_assignments_instructor_list_submissions.vm[line 618, column 77]

      java.lang.NullPointerException
      at org.sakaiproject.assignment.impl.BaseAssignmentService$BaseAssignmentSubmission.getGrade(BaseAssignmentService.java:10328)
      at org.sakaiproject.assignment.impl.BaseAssignmentService$BaseAssignmentSubmission.getGrade(BaseAssignmentService.java:10309)
      at org.sakaiproject.assignment.impl.BaseAssignmentService$BaseAssignmentSubmission.getGradeOrComment(BaseAssignmentService.java:10754)
      at org.sakaiproject.assignment.impl.BaseAssignmentService$BaseAssignmentSubmission.getStatus(BaseAssignmentService.java:10670)
      at sun.reflect.GeneratedMethodAccessor645.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
      at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
      at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
      at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
      at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:342)
      at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
      at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
      at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
      at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:366)
      at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
      at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
      at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
      at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106)
      at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
      at org.apache.velocity.Template.merge(Template.java:328)
      at org.apache.velocity.Template.merge(Template.java:235)
      at org.apache.velocity.tools.view.servlet.VelocityViewServlet.performMerge(VelocityViewServlet.java:805)
      at org.apache.velocity.tools.view.servlet.VelocityViewServlet.mergeTemplate(VelocityViewServlet.java:762)
      at org.apache.velocity.tools.view.servlet.VelocityViewServlet.doRequest(VelocityViewServlet.java:555)
      at org.apache.velocity.tools.view.servlet.VelocityViewServlet.doGet(VelocityViewServlet.java:509)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  maintenanceteam Core Team
                  Reporter:
                  hall@udel.edu John Hall
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  6 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:

                    Git Source Code