Fedora-directory-devel Digest, Vol 19, Issue 8Re: [Fedora-directory-devel] Please review: distributed numeric assignment plugin
Howard Chu
hyc at symas.com
Mon Jan 22 21:59:09 UTC 2007
> Date: Mon, 22 Jan 2007 13:02:40 -0700
> From: Richard Megginson <rmeggins at redhat.com>
>> > Rob Crittenden wrote:
>>> >> Pete Rowley wrote:
>>>> >>> New pre-operation plugin:
>>> >>
>>> >> In dna_get_next_value() what could cause a call to
>>> >> slapi_search_internal_get_entry() to fail that you have to try 3 times?
>>> >>
>> > It's actually the mod operation that can fail, the original value is
>> > deleted and the new value added in one operation with two mods, if the
>> > original value has changed since the search the mod operation will
>> > fail. It's a way to get an atomic increment.
> Ok. So I think the errors should be treated a little differently. If
> the search fails, that's bad - probably a fatal error, or perhaps
> someone deleted the configuration entry out from under you. I think
> that if the mod fails, you should check the error code, for something
> like LDAP_TYPE_OR_VALUE_EXISTS, which means the mod->add failed because
> attribute already has that value, or whatever specific error is returned
> from the mod->delete value operation when the value doesn't exist.
> Other errors are probably fatal.
You should only be able to get LDAP_NO_SUCH_ATTRIBUTE, not
LDAP_TYPE_OR_VALUE_EXISTS from this operation. The delete of the old value
must fail before it even tries to add the new value. This is the standard
test-and-set operation in LDAP. (And of course LDAP_NO_SUCH_OBJECT if someone
is really messing with you...)
--
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc
OpenLDAP Core Team http://www.openldap.org/project/
More information about the Fedora-directory-devel
mailing list