directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRSERVER-1368) Using Extended Objectclass fails
Date Sun, 24 May 2009 23:31:45 GMT

    [ https://issues.apache.org/jira/browse/DIRSERVER-1368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12712619#action_12712619
] 

Emmanuel Lecharny commented on DIRSERVER-1368:
----------------------------------------------

Thanks to the test case, I was able to reproduce the problem easily. The fix was not so easy
... 

Basically, the problem is that when we add a new OC, we don't update the superiors' cache
(it contains the list of OC superiors). I have added a fix for this specific case, but sadly,
it does not work well with OC added to a disabled Schema. This is a bit problematic, because
added schema elements are injected into a temporary registry, which is injected into the real
registry when the schema is enabled, but the internal schema caches are not updated. This
has to be fully reviewed and it will take quite some time (I expect the time to fix and test
the issue to be around 2 days).

> Using Extended Objectclass fails
> --------------------------------
>
>                 Key: DIRSERVER-1368
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1368
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.5
>         Environment: Linux - Ubuntu 9.04
>            Reporter: Paul Edwards
>            Assignee: Emmanuel Lecharny
>             Fix For: 1.5.5
>
>         Attachments: ApacheDSTest.java, ApacheDSUtils.java
>
>
> I have need to modify the schema. I have everything running smoothly (see previous posts
to this group...) I have a situation where I need to extend InetOrgPerson. I have this scenario
running successfully under OpenLdap. So I modify ou=schema in apacheDS with:
> dn: m-oid=2.16.840.1.113730.3.2.22.249, ou=attributeTypes, cn=inetorgperson, ou=schema
> m-oid: 2.16.840.1.113730.3.2.22.249
> m-substr: caseIgnoreSubstringsMatch
> m-syntax: 1.3.6.1.4.1.1466.115.121.1.15
> m-equality: caseIgnoreMatch
> m-singleValue: TRUE
> m-name: accountStatus
> m-collective: FALSE
> m-obsolete: FALSE
> m-usage: USER_APPLICATIONS
> objectClass: metaAttributeType
> objectClass: metaTop
> objectClass: top
> m-noUserModification: FALSE
> m-description: Account Status
>        
> dn: m-oid=2.16.840.1.113730.3.2.22, ou=objectClasses, cn=inetorgperson, ou=schema
> m-oid: 2.16.840.1.113730.3.2.22
> m-obsolete: FALSE
> m-may: accountStatus
> objectClass: metaObjectClass
> objectClass: metaTop
> objectClass: top
> m-typeObjectClass: STRUCTURAL
> m-name: extendPerson
> m-supObjectClass: inetOrgPerson
> m-description: Extended InetOrgPerson
> I can then connect to the apacheDS with third party ldap tools and see that these changes
are present.
> I then try to add:
> dn: cn=pedwards,ou=People,dc=testdomain,dc=co,dc=nz
> objectclass: top
> objectclass: extendPerson
> uid: pedwards
> sn: Edwards
> cn: pedwards
> initials: PE
> And I get:
> LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for     Add Request
> Attribute initials not declared in objectClasses of entry cn=pedwards,ou=People,dc=testdomain,dc=co,dc=nz
> However if I use inetOrgPerson instead of extendPerson, the ldif goes in fine. It seems
to me that its ignoring the fact that extendPerson extends inetOrgPerson.
> org.apache.directory.shared.ldap.exception.LdapSchemaViolationException: Attribute initials
not declared in objectClasses of entry cn=pedwards,ou=People,dc=testdomain,dc=co,dc=nz
>         at org.apache.directory.server.core.schema.SchemaInterceptor.assertAllAttributesAllowed(SchemaInterceptor.java:1829)
>         at org.apache.directory.server.core.schema.SchemaInterceptor.check(SchemaInterceptor.java:1703)
>         at org.apache.directory.server.core.schema.SchemaInterceptor.add(SchemaInterceptor.java:1787)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.operational.OperationalAttributeInterceptor.add(OperationalAttributeInterceptor.java:202)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.changelog.ChangeLogInterceptor.add(ChangeLogInterceptor.java:109)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.exception.ExceptionInterceptor.add(ExceptionInterceptor.java:220)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.interceptor.BaseInterceptor.add(BaseInterceptor.java:129)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.authz.AciAuthorizationInterceptor.add(AciAuthorizationInterceptor.java:448)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.referral.ReferralInterceptor.add(ReferralInterceptor.java:251)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.authn.AuthenticationInterceptor.add(AuthenticationInterceptor.java:212)
>         at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196)
>         at org.apache.directory.server.core.normalization.NormalizationInterceptor.add(NormalizationInterceptor.java:117)
>         at org.apache.directory.server.core.interceptor.InterceptorChain.add(InterceptorChain.java:756)
>         at org.apache.directory.server.core.DefaultOperationManager.add(DefaultOperationManager.java:260)
>         at org.apache.directory.server.core.DefaultCoreSession.add(DefaultCoreSession.java:183)
>         at org.apache.directory.server.core.DefaultCoreSession.add(DefaultCoreSession.java:169)
>         at org.apache.directory.server.ldap.handlers.AddHandler.handle(AddHandler.java:57)
>         at org.apache.directory.server.ldap.handlers.AddHandler.handle(AddHandler.java:39)
>         at org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:176)
>         at org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56)
>         at org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:232)
>         at org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:194)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:722)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
>         at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59)
>         at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)
>         at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:552)
>         at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:544)
>         at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:488)
>         at java.lang.Thread.run(Thread.java:619)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message