04-25-07 06:11 AM
[ https://issues.apache.org/jira/brow...action_12491518 ]
Ersin Er commented on DIRSERVER-916:
------------------------------------
Thanks Stefan. This is really an interesting problem. But I have to say it w
orries me. I'll have a look at it today.
> SubtreeSpecificationParser and LDAP filter
> ------------------------------------------
>
> Key: DIRSERVER-916
> URL: https://issues.apache.org/jira/browse/DIRSERVER-916
> Project: Directory ApacheDS
> Issue Type: Bug
> Reporter: Stefan Seelmann
> Fix For: 1.5.1
>
>
> I got a curious error. While playing with the new LS subtreespecification
editor and writing a subtreespecification with an LDAP filter the SubtreeSpe
cificationParser *sometimes* gets killed.
> It seems like the parser is stateful. If I first write some subtreespecifi
cations w/o an LDAP filter the parser seems to be stable. But when adding it
just after starting the server the parser dies with an "Read end dead".
> It was able to reproduce it with the following steps, using the trunk:
> 1.) Create an entry with the following subtreespecification
> -------------------------------------------------------------------
> dn: cn=subentry,dc=example,dc=com
> objectClass: accessControlSubentry
> objectClass: subentry
> objectClass: top
> cn: subentry
> prescriptiveaci: { identificationTag "dummy", precedence 1, authentic
ationLe
> vel none, itemOrUserFirst userFirst: { userClasses { }, userPe
rmissions {
> } } }
> subtreespecification: { specificationFilter (cn=test) }
> -------------------------------------------------------------------
> 2.) Shutdown the server
> 3.) Startup the server
> 4.) Overwrite the subtreespecification value with a refinement
> -------------------------------------------------------------------
> dn: cn=subentry,dc=example,dc=com
> changetype: modify
> replace: subtreespecification
> subtreespecification: { specificationFilter item:top }
> -
> -------------------------------------------------------------------
> 4.) Overwrite the subtreespecification value with a filter
> -------------------------------------------------------------------
> dn: cn=subentry,dc=example,dc=com
> changetype: modify
> replace: subtreespecification
> subtreespecification: { specificationFilter (cn=test) }
> -
> -------------------------------------------------------------------
> The client receives the following error message:
> -------------------------------------------------------------------
> ldap_modify: Invalid syntax (21)
> additional info: failed to modify entry cn=subentry,dc=example,dc=
com: failed to parse the new subtreeSpecification
> -------------------------------------------------------------------
> The server throws the following exception:
> -------------------------------------------------------------------
> [22:46:49] ERROR [org.apache.directory.server.core.subtree.Subentr
yService] - failed to parse the new subtreeSpecification
> java.text.ParseException: Parser failure on subtree specification:
> { specificationFilter (cn=test) }
> Antlr exception trace:
> filterParser failed. Read end dead
> at org.apache.directory.shared.ldap.subtree.SubtreeSpecificationPa
rser.parse(SubtreeSpecificationParser.java:133)
> at org.apache.directory.server.core.subtree.SubentryService.modify
(SubentryService.java:1045)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.schema.SchemaService.modify(Sc
hemaService.java:1517)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.operational.OperationalAttribu
teService.modify(OperationalAttributeService.java:177)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.exception.ExceptionService.mod
ify(ExceptionService.java:291)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.authz.DefaultAuthorizationServ
ice.modify(DefaultAuthorizationService.java:241)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.authz.AuthorizationService.mod
ify(AuthorizationService.java:510)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.referral.ReferralService.modif
y(ReferralService.java:746)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.authn.AuthenticationService.mo
dify(AuthenticationService.java:351)
> at org.apache.directory.server.core.interceptor.InterceptorChain$E
ntry$1.modify(InterceptorChain.java:1162)
> at org.apache.directory.server.core.normalization.NormalizationSer
vice.modify(NormalizationService.java:132)
> at org.apache.directory.server.core.interceptor.InterceptorChain.m
odify(InterceptorChain.java:761)
> at org.apache.directory.server.core.partition.PartitionNexusProxy.
modify(PartitionNexusProxy.java:362)
> at org.apache.directory.server.core.partition.PartitionNexusProxy.
modify(PartitionNexusProxy.java:349)
> at org.apache.directory.server.core.jndi.ServerDirContext.modifyAt
tributes(ServerDirContext.java:233)
> at javax.naming.directory.InitialDirContext.modifyAttributes(Initi
alDirContext.java:153)
> at org.apache.directory.server.ldap.support.ModifyHandler.messageR
eceived(ModifyHandler.java:80)
> at org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived
(DemuxingIoHandler.java:144)
> at org.apache.directory.server.ldap.LdapProtocolProvider$LdapProto
colHandler.messageReceived(LdapProtocolProvider.java:427)
> at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter
.messageReceived(AbstractIoFilterChain.java:703)
> at org.apache.mina.common.support.AbstractIoFilterChain.callNextMe
ssageReceived(AbstractIoFilterChain.java:362)
> at org.apache.mina.common.support.AbstractIoFilterChain.access$120
0(AbstractIoFilterChain.java:54)
> at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$
1.messageReceived(AbstractIoFilterChain.java:800)
> at org.apache.mina.filter.LoggingFilter.messageReceived(LoggingFil
ter.java:97)
> at org.apache.mina.common.support.AbstractIoFilterChain.callNextMe
ssageReceived(AbstractIoFilterChain.java:362)
> at org.apache.mina.common.support.AbstractIoFilterChain.access$120
0(AbstractIoFilterChain.java:54)
> at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$
1.messageReceived(AbstractIoFilterChain.java:800)
> at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutpu
t.flush(SimpleProtocolDecoderOutput.java:60)
> at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceive
d(ProtocolCodecFilter.java:190)
> at org.apache.mina.common.support.AbstractIoFilterChain.callNextMe
ssageReceived(AbstractIoFilterChain.java:362)
> at org.apache.mina.common.support.AbstractIoFilterChain.access$120
0(AbstractIoFilterChain.java:54)
> at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$
1.messageReceived(AbstractIoFilterChain.java:800)
> at org.apache.mina.filter.executor.ExecutorFilter.processEvent(Exe
cutorFilter.java:243)
> at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRun
nable.run(ExecutorFilter.java:305)
> at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecut
or$Worker.runTask(ThreadPoolExecutor.java:665)
> at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecut
or$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
> -------------------------------------------------------------------
> Now when trying to modify the subtreespecification again, the client gets
the follwoing message, but no server logs:
> -------------------------------------------------------------------
> ldap_modify: Loop detected (54)
> additional info: failed to modify entry cn=subentry,dc=example,dc=
com: Unexpected exception
> -------------------------------------------------------------------
> The same error occurs when trying to delete the entry
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[ Post a follow-up to this message ]
|