Store the current max UID in the directory itself, use a single modify
request with
delete <old value>
add <new value>
to update it. Since the modify is atomic this operation will only succeed
if the supplied <old value> matches the one currently in the directory. No
need for app-level locks, but you may have to retry a few times if multiple
clients are updating at once. (That doesn't seem like a realistic concern
to me though.)
-- Howard Chu
Chief Architect, Symas Corp. Director, Highland Sun
http://www.symas.com http://highlandsun.com/hyc
Symas: Premier OpenSource Development and Support
-----Original Message-----
From: owner-openldap-software@OpenLDAP.org
[mailto:owner-openldap-software@OpenLDAP.org]On Behalf Of Kervin L.
Pierre
Sent: Tuesday, August 13, 2002 5:01 PM
To: Aly Dharshi
Cc: openldap-software@OpenLDAP.org
Subject: Re: Uid/Gid Question
Ran into this issue as well. I had to pull the entire ou everytime,
then sort and select the greatest one. You can speed up things a little
by limiting the returned attribute to only the uidnumber.
Another option is if your application keeps track of the next available
uid itself and increments this as necessary. We use PHP so this is hard
to do, lots of locking issues. JSP application server would do this
easily as you could keep the next available uid variable in application
scope.
The totally LDAP approach, I'm guessing is to use the "server side sort"
control RFC2891 ( http://www.ietf.org/rfc/rfc2891.txt ) together with
the simple paged result control RFC2696 (
http://www.ietf.org/rfc/rfc2696.txt ) . But these controls aren't
supported in OpenLDAP as yet. Using these, you'd be able to do a
reverse server side sort on uidnumber and limit the returned values to 1
--Kervin
Aly Dharshi wrote:
Hello All,
I want to use perl to develop a script to add users and such other
functionality. I just wanted to find out what would be the simplest way
to get
the next available uid/gid combo, say if aly is 500:500 for user/group
how could I get 501 for the next user ? Is there some function ?
Cheers,
Aly.