Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
Docker
Description
Encountered in grouper-loader.properties. If a ${group.attribute} is called with additional commands that use regex, an issue occurs if the regex contains {,}.
stackoverflow post details the issue as well in general.
Steps to reproduce:
In your provisioner configuration of choice, replace groupCreationLdifTemplate with the following:
changeLog.consumer.pspng_campusOrgLdap.groupCreationLdifTemplate = dn:${utils.bushyDn(group.name.replaceFirst("^path:to:(GOOD|BETTER|BEST|BESTER)","ref:$1").replaceFirst("^path:to:GOOD-[a-zA-Z]{0,16}-[0-9]{1,6}:ref","ref").replaceFirst("^path:to:GOOD-[a-zA-Z]{0,16}-[0-9]{1,6}:org:.*:([0-9A-Za-z].*)$","dept:$1"),"CN","OU")}||objectclass:group||description:${group.description}||displayName:${group.displayName.replace(group.parentStemName.toString()+":","")}||gidNumber:${group.idIndex} |
Which will result in something like:
2019-11-22 15:28:28,295: [FullSyncer(pspng_GOODusOrgLdap)-Thread] ERROR Provisioner.evaluateJexlExpression(803) - - Jexl Expression GroupTemplate 'dn:${utils.bushyDn(group.name.replaceFirst("^path:to:(GOOD|BETTER|BEST|BESTER)","ref:$1").replaceFirst("^path:to:ALRIGHT-[a-zA-Z]{0,16}-[0-9]{1,6}:ref","ref").replaceFirst("^path:to:ALRIGHT-[a-zA-Z]{0,16}-[0-9]{1,6}:org:.*:([0-9A-Za-z].*)$","dept:$1"),"CN","OU")} |
objectclass:group
|
description:${group.description}
|
displayName:${group.displayName.replace(group.parentStemName.toString()+":","")} |
gidNumber:${group.idIndex}' could not be evaluated for subject 'null/null' and group 'path:to:ALRIGHT-COMPSCI-12228:ref:ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord/#158224(Existing)/null' which used variableMap '{extension=ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord, displayName=path:to:ALRIGHT-COMPSCI-12228:ref:ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord, groupId=02befc33248d4915b47ca66ffb39e8c8, provisionerName=pspng_GOODusOrgLdap, description=ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord auto-created by grouperLoader, groupSearchBaseDn=ou=org,ou=Groups,dc=valGOODus,dc=uncg,dc=edu, groupAttributes={}, displayExtension=ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord, userSearchBaseDn=dc=valGOODus,dc=uncg,dc=edu, provisionerType=LdapGroupProvisioner, groupCreationBaseDn=ou=org,ou=Groups,dc=valGOODus,dc=uncg,dc=edu, utils=edu.internet2.middleware.grouper.pspng.PspJexlUtils@3c8108c3, stemAttributes={etc:pspng:provision_to=[pspng_GOODusOrgLdap]}, name=path:to:ALRIGHT-COMPSCI-12228:ref:ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord, idIndex=158224, group=Group[name=path:to:ALRIGHT-COMPSCI-12228:ref:ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord,uuid=02befc33248d4915b47ca66ffb39e8c8]}' |
java.lang.RuntimeException: Error substituting string: '${utils.bushyDn(group.name.replaceFirst("^path:to:(GOOD|BETTER|BEST|BESTER)","ref:$1").replaceFirst("^path:to:ALRIGHT-[a-zA-Z]{0,16}' |
at edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage(GrouperUtil.java:9483) |
at edu.internet2.middleware.grouper.pspng.Provisioner.evaluateJexlExpression(Provisioner.java:759) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.getGroupLdifFromTemplate(LdapGroupProvisioner.java:431) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.createGroup(LdapGroupProvisioner.java:340) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.createGroup(LdapGroupProvisioner.java:42) |
at edu.internet2.middleware.grouper.pspng.Provisioner.prepareGroupCache(Provisioner.java:1037) |
at edu.internet2.middleware.grouper.pspng.Provisioner.startProvisioningBatch(Provisioner.java:648) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.fullSyncGroup(FullSyncProvisioner.java:755) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.processQueueItem(FullSyncProvisioner.java:456) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.thread_manageFullSyncProcessing(FullSyncProvisioner.java:252) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner$1.run(FullSyncProvisioner.java:147) |
at java.lang.Thread.run(Thread.java:748) |
Caused by: org.apache.commons.jexl2.JexlException$Tokenization: edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage@1:124 tokenization error near '... 0,16 ...' |
at org.apache.commons.jexl2.JexlEngine.parse(JexlEngine.java:1258) |
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:435) |
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:419) |
at edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage(GrouperUtil.java:9428) |
... 11 more |
Caused by: org.apache.commons.jexl2.parser.TokenMgrError: Lexical error at line 1, column 124. Encountered: <EOF> after : "\"^path:to:ALRIGHT-[a-zA-Z]{0,16" |
at org.apache.commons.jexl2.parser.ParserTokenManager.getNextToken(ParserTokenManager.java:3300) |
at org.apache.commons.jexl2.parser.Parser.jj_ntk(Parser.java:3865) |
at org.apache.commons.jexl2.parser.Parser.Method(Parser.java:2021) |
at org.apache.commons.jexl2.parser.Parser.AnyMethod(Parser.java:2085) |
at org.apache.commons.jexl2.parser.Parser.DotReference(Parser.java:2279) |
at org.apache.commons.jexl2.parser.Parser.Reference(Parser.java:2344) |
at org.apache.commons.jexl2.parser.Parser.PrimaryExpression(Parser.java:2184) |
at org.apache.commons.jexl2.parser.Parser.UnaryExpression(Parser.java:1481) |
at org.apache.commons.jexl2.parser.Parser.MultiplicativeExpression(Parser.java:1269) |
at org.apache.commons.jexl2.parser.Parser.AdditiveExpression(Parser.java:1196) |
at org.apache.commons.jexl2.parser.Parser.RelationalExpression(Parser.java:991) |
at org.apache.commons.jexl2.parser.Parser.EqualityExpression(Parser.java:915) |
at org.apache.commons.jexl2.parser.Parser.AndExpression(Parser.java:873) |
at org.apache.commons.jexl2.parser.Parser.ExclusiveOrExpression(Parser.java:831) |
at org.apache.commons.jexl2.parser.Parser.InclusiveOrExpression(Parser.java:789) |
at org.apache.commons.jexl2.parser.Parser.ConditionalAndExpression(Parser.java:747) |
at org.apache.commons.jexl2.parser.Parser.ConditionalOrExpression(Parser.java:705) |
at org.apache.commons.jexl2.parser.Parser.ConditionalExpression(Parser.java:627) |
at org.apache.commons.jexl2.parser.Parser.Expression(Parser.java:450) |
at org.apache.commons.jexl2.parser.Parser.Method(Parser.java:2039) |
at org.apache.commons.jexl2.parser.Parser.AnyMethod(Parser.java:2085) |
at org.apache.commons.jexl2.parser.Parser.DotReference(Parser.java:2279) |
at org.apache.commons.jexl2.parser.Parser.Reference(Parser.java:2344) |
at org.apache.commons.jexl2.parser.Parser.PrimaryExpression(Parser.java:2184) |
at org.apache.commons.jexl2.parser.Parser.UnaryExpression(Parser.java:1481) |
at org.apache.commons.jexl2.parser.Parser.MultiplicativeExpression(Parser.java:1269) |
at org.apache.commons.jexl2.parser.Parser.AdditiveExpression(Parser.java:1196) |
at org.apache.commons.jexl2.parser.Parser.RelationalExpression(Parser.java:991) |
at org.apache.commons.jexl2.parser.Parser.EqualityExpression(Parser.java:915) |
at org.apache.commons.jexl2.parser.Parser.AndExpression(Parser.java:873) |
at org.apache.commons.jexl2.parser.Parser.ExclusiveOrExpression(Parser.java:831) |
at org.apache.commons.jexl2.parser.Parser.InclusiveOrExpression(Parser.java:789) |
at org.apache.commons.jexl2.parser.Parser.ConditionalAndExpression(Parser.java:747) |
at org.apache.commons.jexl2.parser.Parser.ConditionalOrExpression(Parser.java:705) |
at org.apache.commons.jexl2.parser.Parser.ConditionalExpression(Parser.java:627) |
at org.apache.commons.jexl2.parser.Parser.Expression(Parser.java:450) |
at org.apache.commons.jexl2.parser.Parser.ExpressionStatement(Parser.java:224) |
at org.apache.commons.jexl2.parser.Parser.Statement(Parser.java:140) |
at org.apache.commons.jexl2.parser.Parser.JexlScript(Parser.java:72) |
at org.apache.commons.jexl2.parser.Parser.parse(Parser.java:24) |
at org.apache.commons.jexl2.JexlEngine.parse(JexlEngine.java:1248) |
... 14 more |
2019-11-22 15:28:28,296: [FullSyncer(pspng_GOODusOrgLdap)-Thread] ERROR FullSyncProvisioner.fullSyncGroup(775) - - FullSyncer(pspng_GOODusOrgLdap): Problem doing full sync. Requeuing group path:to:ALRIGHT-COMPSCI-12228:ref:ALRIGHT-COMPSCI-12228_StuWorker-systemOfRecord/#158224(Existing) |
edu.internet2.middleware.grouper.pspng.PspException: Jexl evaluation failed: Error substituting string: '${utils.bushyDn(group.name.replaceFirst("^path:to:(GOOD|BETTER|BEST|BESTER)","ref:$1").replaceFirst("^path:to:ALRIGHT-[a-zA-Z]{0,16}' |
at edu.internet2.middleware.grouper.pspng.Provisioner.evaluateJexlExpression(Provisioner.java:808) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.getGroupLdifFromTemplate(LdapGroupProvisioner.java:431) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.createGroup(LdapGroupProvisioner.java:340) |
at edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner.createGroup(LdapGroupProvisioner.java:42) |
at edu.internet2.middleware.grouper.pspng.Provisioner.prepareGroupCache(Provisioner.java:1037) |
at edu.internet2.middleware.grouper.pspng.Provisioner.startProvisioningBatch(Provisioner.java:648) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.fullSyncGroup(FullSyncProvisioner.java:755) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.processQueueItem(FullSyncProvisioner.java:456) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner.thread_manageFullSyncProcessing(FullSyncProvisioner.java:252) |
at edu.internet2.middleware.grouper.pspng.FullSyncProvisioner$1.run(FullSyncProvisioner.java:147) |
at java.lang.Thread.run(Thread.java:748) |
|