Uploaded image for project: 'Grouper'
  1. Grouper
  2. GRP-2997

ChangeLogConsumerBaseImpl membership_deleteMembership fails when subject is a deleted group

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • 2.5.37
    • None
    • grouperLoader
    • None

    Description

      Error: o365unified threw an exception processing change log entry sequence number 22091155., sequenceNumber: 22091155, java.lang.NullPointerException
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl$ChangeLogEventType$5.process(ChangeLogConsumerBaseImpl.java:282)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl.processChangeLogEntry(ChangeLogConsumerBaseImpl.java:871)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl.processChangeLogEntries(ChangeLogConsumerBaseImpl.java:791)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogHelper.processRecords(ChangeLogHelper.java:247)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderType$6.runJob(GrouperLoaderType.java:673)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.runJob(GrouperLoaderJob.java:465)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.execute(GrouperLoaderJob.java:345)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
      Did not get all the way through the batch! 22091155 != 22092154java.lang.RuntimeException: Error in loader job: null, check logs: Error: o365unified threw an exception processing change log entry sequence number 22091155., sequenceNumber: 22091155, java.lang.NullPointerException
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl$ChangeLogEventType$5.process(ChangeLogConsumerBaseImpl.java:282)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl.processChangeLogEntry(ChangeLogConsumerBaseImpl.java:871)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBaseImpl.processChangeLogEntries(ChangeLogConsumerBaseImpl.java:791)
      	at edu.internet2.middleware.grouper.changeLog.ChangeLogHelper.processRecords(ChangeLogHelper.java:247)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderType$6.runJob(GrouperLoaderType.java:673)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.runJob(GrouperLoaderJob.java:465)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.execute(GrouperLoaderJob.java:345)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
      Did not get all the way through the batch! 22091155 != 22092154
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.runJob(GrouperLoaderJob.java:474)
      	at edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.execute(GrouperLoaderJob.java:345)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
      

       

      For implementations based on ChangeLogConsumerBaseImpl (mainly the O365 provisioner), the deleteMembership event type requires a subject with the id from the changelog entry. However, if the subject is a group, and it was removed due to the group being deleted, the subject can't be found.

      There is no easy way to convert this to use a PITMember, since there aren't suitable finder functions like there is with PITGroup. The best option might be to findPITMembersBySubjectIdSourceAndType, which returns a set for some reason, even though it should return either 0 or 1 results.

      The quick but imperfect fix is to look at the changelog entry and reject it where the source type is g:gsa. It's already skipping subjects that are non-person types, but it needs to resolve it to a subject to figure out the type (which causes the NPE since the subject is null). It's an imperfect fix because it's unlikely but possible that a person would be deleted from the members table.

      Attachments

        Activity

          People

            chad.redman@at.internet2.edu Chad Redman (unc.edu)
            chad.redman@at.internet2.edu Chad Redman (unc.edu)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: