Skip to Content.
Sympa Menu

grouper-users - [grouper-users] PSP error when a group name contains a dollar sign followed by a number

Subject: Grouper Users - Open Discussion List

List archive

[grouper-users] PSP error when a group name contains a dollar sign followed by a number


Chronological Thread 
  • From: Dominique Petitpierre <>
  • To: "" <>
  • Subject: [grouper-users] PSP error when a group name contains a dollar sign followed by a number
  • Date: Sat, 27 Apr 2013 18:30:53 +0200
  • Authentication-results: sfpop-ironport01.merit.edu; dkim=neutral (message not signed) header.i=none
  • Organization: University of Geneva

Hello,

in Grouper 2.1.3 if a group name contains a dollar sign followed by a
number, e.g. "i$7fco_gest", the PSP daemon reports a weird error:

java.lang.IndexOutOfBoundsException: No group 7

You will find in annexe an extract of the grouper_error.log showing
that message together with the full java stack.

This does not happen if the dollar sign is followed by a letter.

Since it happens in the context of a replaceAll(regex,replacement), it
looks like the "group 7" in question is in fact referring to what
would have matched the 7th parenthesized expression of a the regular
expression (capturing group).

Strange that a data string (i.e. obtained from the Grouper DB or LDAP)
is used as the replacement string in a replaceAll operation! I guess
that a group name containing a backslash ("\") would also cause
problems in that case.

Eventhough it occurs in the LdapSourceAdapter code, I did not see such
errors in other context than the PSP (in particular the UI and gsh
loader don't seem to trigger it).

Probably a quick fix is to quote sequences of characters, like "$7",
significant in the replacement pattern (may be with quoteReplacement
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#quoteReplacement%28java.lang.String%29 ).

Best regards,
Dominique

Mr Dominique Petitpierre, user=Dominique.Petitpierre domain=unige.ch
IT Division, University of Geneva, Switzerland
2013-04-27 17:09:50,840: [DefaultQuartzScheduler_Worker-8] INFO
PspChangeLogConsumer.processChangeLogEntry(566) - - PSP Consumer 'psp' -
Change log entry 'ChangeLogEntry[timestamp=2013-04-27
15:35:44.072,sequence=8358,category=group,actionname=addGroup,contextId=586b975c098546f196ebb0ad40e98531,id=21ada782e4e143a4a2c84cf452a44659,name=unige.ch:role:adminora:fco:i$7fco_gest,parentStemId=4f5e2ef1ba6145119d3127556ee3dd6
a,displayName=UniGE:Role:Adminora:FCO:i$7fco_gest,description=i$7fco_gest
auto-created by grouperLoader]'
2013-04-27 17:09:50,841: [DefaultQuartzScheduler_Worker-8] INFO
Psp.execute(1405) - - Psp 'psp' - Sync
SyncRequest[id=unige.ch:role:adminora:fco:i$7fco_gest,requestID=2013/04/27-17:09:50.841,returnData=everything]
2013-04-27 17:09:50,841: [DefaultQuartzScheduler_Worker-8] INFO
Psp.execute(1140) - - Psp 'psp' - Diff
DiffRequest[id=unige.ch:role:adminora:fco:i$7fco_gest,requestID=2013/04/27-17:09:50.841,returnData=everything]
2013-04-27 17:09:50,841: [DefaultQuartzScheduler_Worker-8] INFO
Psp.execute(980) - - Psp 'psp' - Calc
CalcRequest[id=unige.ch:role:adminora:fco:i$7fco_gest,requestID=2013/04/27-17:09:50.841,returnData=everything]
2013-04-27 17:09:50,846: [DefaultQuartzScheduler_Worker-8] ERROR
PspChangeLogConsumer.processChangeLogEntries(502) - - PSP Consumer 'psp' -
An error occurred processing sequence number 8358
java.lang.IndexOutOfBoundsException: No group 7
at java.util.regex.Matcher.group(Matcher.java:470)
at java.util.regex.Matcher.appendReplacement(Matcher.java:737)
at java.util.regex.Matcher.replaceAll(Matcher.java:813)
at java.lang.String.replaceAll(String.java:2189)
at
edu.internet2.middleware.subject.provider.LdapSourceAdapter.getLdapResultsHelper(LdapSourceAdapter.java:617)
at
edu.internet2.middleware.subject.provider.LdapSourceAdapter.getLdapResults(LdapSourceAdapter.java:576)
at
edu.internet2.middleware.subject.provider.LdapSourceAdapter.getLdapUnique(LdapSourceAdapter.java:672)
at
edu.internet2.middleware.subject.provider.LdapSourceAdapter.getSubject(LdapSourceAdapter.java:307)
at
edu.internet2.middleware.grouper.subj.SourcesXmlResolver.find(SourcesXmlResolver.java:310)
at
edu.internet2.middleware.grouper.subj.CachingResolver.find(CachingResolver.java:143)
at
edu.internet2.middleware.grouper.subj.ValidatingResolver.find(ValidatingResolver.java:104)
at
edu.internet2.middleware.grouper.SubjectFinder.findByIdAndSource(SubjectFinder.java:310)
at
edu.internet2.middleware.grouper.shibboleth.dataConnector.MemberDataConnector$1.callback(MemberDataConnector.java:100)
at
edu.internet2.middleware.grouper.shibboleth.dataConnector.MemberDataConnector$1.callback(MemberDataConnector.java:76)
at
edu.internet2.middleware.grouper.GrouperSession.callbackGrouperSession(GrouperSession.java:801)
at
edu.internet2.middleware.grouper.shibboleth.dataConnector.MemberDataConnector.resolve(MemberDataConnector.java:75)
at
edu.internet2.middleware.grouper.shibboleth.dataConnector.MemberDataConnector.resolve(MemberDataConnector.java:66)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.ContextualDataConnector.resolve(ContextualDataConnector.java:77)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.ContextualDataConnector.resolve(ContextualDataConnector.java:31)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver.resolveDataConnector(ShibbolethAttributeResolver.java:374)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver.resolveDependencies(ShibbolethAttributeResolver.java:410)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver.resolveAttribute(ShibbolethAttributeResolver.java:332)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver.resolveAttributes(ShibbolethAttributeResolver.java:284)
at
edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver.resolveAttributes(ShibbolethAttributeResolver.java:131)
at
edu.internet2.middleware.psp.shibboleth.SimpleAttributeAuthority.getAttributes(SimpleAttributeAuthority.java:96)
at
edu.internet2.middleware.psp.shibboleth.SimpleAttributeAuthority.getAttributes(SimpleAttributeAuthority.java:39)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1071)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1004)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1212)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1164)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1475)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1429)
at edu.internet2.middleware.psp.Psp.execute(Psp.java:1389)
at
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer.executeSync(PspChangeLogConsumer.java:293)
at
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer.processGroupAdd(PspChangeLogConsumer.java:663)
at
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer$EventType$3.process(PspChangeLogConsumer.java:102)
at
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer.processChangeLogEntry(PspChangeLogConsumer.java:570)
at
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer.processChangeLogEntries(PspChangeLogConsumer.java:497)
at
edu.internet2.middleware.grouper.changeLog.ChangeLogHelper.processRecords(ChangeLogHelper.java:242)
at
edu.internet2.middleware.grouper.app.loader.GrouperLoaderType$4.runJob(GrouperLoaderType.java:589)
at
edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.runJob(GrouperLoaderJob.java:398)
at
edu.internet2.middleware.grouper.app.loader.GrouperLoaderJob.execute(GrouperLoaderJob.java:300)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)



Archive powered by MHonArc 2.6.16.

Top of Page