[GRP-1921] "Why cant deprovisioning def base def be found?" error Created: 05/Oct/18  Updated: 30/Sep/19

Status: Open
Project: Grouper
Component/s: API
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Blocker
Reporter: Stefano Angioni (Inactive) Assignee: Bill Thompson (lafayette.edu)
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

We are on a patched version of Grouper 2.3.0 (API patches 0 to 108 and PSPNG patches 0 to 21).



 Description   

When we try assigning values to new PSPNG provisioning attributes [1] on folders, we are getting a "Why cant deprovisioning def base def be found?" error. See below.

It's our belief that this was working properly before applying API patch 107.

Do you know of any workaround? As this is a major blocker for us for some critical development work ...

 

ERROR java.lang.RuntimeException:

Why cant deprovisioning def base def be found?, Problem in HibernateSession: HibernateSession (33a71d23): new, notReadonly, READ_WRITE_NEW, notActiveTransaction, session (a55e82a)

        at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningAttributeNames.retrieveAttributeDefBaseDef (GrouperDeprovisioningAttributeNames.java:412)

        at edu.internet2.middleware.grouper.cfg.GrouperConfig.attributeDefIdsToIgnoreChangeLogAndAudit (GrouperConfig.java:144)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValue$1.callback (AttributeAssignValue.java:504)

        at edu.internet2.middleware.grouper.hibernate.HibernateSession.callbackHibernateSession (HibernateSession.java:701)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValue.saveOrUpdate (AttributeAssignValue.java:478)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValueDelegate.internal_assignValue (AttributeAssignValueDelegate.java:260)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValueDelegate.assignValue (AttributeAssignValueDelegate.java:217)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValueDelegate.assignValue (AttributeAssignValueDelegate.java:324)

        at edu.internet2.middleware.grouper.attr.value.AttributeAssignValueDelegate$assignValue.call (Unknown Source)

 

[1] https://spaces.at.internet2.edu/display/Grouper/Grouper+Provisioning%3A+PSPNG#GrouperProvisioning:PSPNG-Group/FolderSelection



 Comments   
Comment by Stefano Angioni (Inactive) [ 05/Oct/18 ]

Also noticed this in our logs:

2018-09-27 02:00:02,452: [DefaultQuartzScheduler_Worker-3] ERROR OtherJobBase.execute(199) -  - Error occurred while running job: OTHER_JOB_deprovisioningDaemon
java.lang.RuntimeException: Why cant deprovisioning def attribute def name be found?
       at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningAttributeNames.retrieveAttributeDefNameBase(GrouperDeprovisioningAttributeNames.java:167)
       at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningOverallConfiguration.retrieveConfiguration(GrouperDeprovisioningOverallConfiguration.java:412)
       at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningOverallConfiguration.retrieveConfigurationForStem(GrouperDeprovisioningOverallConfiguration.java:222)
       at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningLogic.updateDeprovisioningMetadata(GrouperDeprovisioningLogic.java:675)
       at edu.internet2.middleware.grouper.app.deprovisioning.GrouperDeprovisioningJob.run(GrouperDeprovisioningJob.java:175)

Comment by Stefano Angioni (Inactive) [ 08/Oct/18 ]

The issue was caused by the grouper property configuration.detect.errors being set to false, so the deprovisionig attributes were not being auto-created.

Once configuration.detect.errors was set to true, then the deprovisioning Job created the missing attributes.

Comment by Wenlai Wang [ 30/Sep/19 ]

Assign provisioning attribute/value to a group should trigger full sync of that group, but actually it triggers full sync everything. workItem.getGroupInfo for the changeLog returns null in the following code (Provisioner): 

if ( workItem.matchesChangelogType(ChangelogHandlingConfig.changelogTypesThatAreHandledIncrementally) ) {
  LOG.debug("process incremental change {}", workItem);
  processIncrementalSyncEvent(workItem);
}
else if ( workItem.getGroupInfo(this) != null ) {
  // This is a changelog entry that modifies the group. Do a FullSync to see if any
  // provisioned information changed. Unfortunately, this will do a membership sync which
  // might slow down the processing of this changelog entry. However, non-membership
  // changes are expected to be infrequent, so we aren't creating an optimized code path
  // that doesn't sync memberships.
 
  FullSyncQueueItem fullSyncStatus = getFullSyncer()
          .scheduleGroupForSync(
                  FullSyncProvisioner.QUEUE_TYPE.ASAP,
                  workItem.groupName,
                  workItem_identifier,
                  "Changelog: %s", workItem);
 
  workItem.markAsSuccess("Handled with scheduled FullSync (qid=%d)", fullSyncStatus.id);
}
else if (  workItemShouldBeHandledByFullSyncOfEverything(workItem) ) {
  LOG.info("{}: Performing sync of all groups to process work item: {}", getDisplayName(), workItem);
  getFullSyncer().queueAllGroupsForFullSync(FullSyncProvisioner.QUEUE_TYPE.CHANGELOG,workItem_identifier,"Work item invokes full sync for everything: %s", workItem);
  if ( getConfig().isGrouperAuthoritative() ) {
    getFullSyncer().scheduleGroupCleanup(FullSyncProvisioner.QUEUE_TYPE.CHANGELOG, workItem_identifier, "Changelog-initiated");
  }
  workItem.markAsSuccess("Scheduled a full-sync of all groups");
}
else
{
  workItem.markAsSkipped("Nothing to do (not a supported change)");
}

Generated at Wed May 08 15:41:05 UTC 2024 using Jira 9.4.18#940018-sha1:32a59db0b032756f9bbd6a22c656d21edb3fb41f.