On Wed, Jan 07, 2015 at 11:07:05AM +0100, Pavel Březina wrote:
> On 01/06/2015 03:59 PM, Dmitri Pal wrote:
> >On 01/06/2015 05:54 AM, Jakub Hrozek wrote:
> >>On Tue, Jan 06, 2015 at 11:31:55AM +0100, Pavel Březina wrote:
> >>>>>*Users*
> >>>>>Do we want also to have methods ListDomainUsers() and ListUsers()
> >>>>>without
> >>>>>the name filter?
> >>>>To list all? What about using '*' for that?
> >>>We can implement it this way internally, but exposing an easier way
> >>>to the
> >>>consumers is nice, imho.
> >>I'm not too opposed, although I prefer minimal APIs.
> >>
> >>>However, do we actually want to allow to list all users? As Dmitri
> >>>suggested
> >>>we may want to require the minimum filter length since the number of
> >>>users
> >>>may be very high. The maximum D-Bus message is 128MiB so I think we
> >>>are good
> >>>there but I think it can be very time consuming to return all users
> >>>without
> >>>some sort of paging.
> >>This feature is internally dependant on enumerate=true, where we already
> >>store all standard POSIX attributes (struct passwd, struct group)
> >>in-memory, do you think the D-Bus "enumeration" provides that much
> >>overhead?
> >>
> >>Paging would be really complex, we'd need to store the full results
> >>in-memory per-client anyway and then pass around some kind of cookie to
> >>resume iteration..
> >>
> >>In a centralized environment, I wouldn't expect the listing commands to
> >>be used that commonly. Greeters or login managers (gdm) would typically
> >>use the cached users instead. Some applications (Hi, RHEV-M!) choose to
> >>display all their users in some kind of table and then I would expect
> >>them to implement paging themselves:
> >>
> >>for letter in a..z:
> >>     users = ListUsersByNameFilter($letter)
> >>
> >>>>>Do we want some other filter options as well?
> >>>>In the design I wanted to keep the filtering simple. Unless we receive
> >>>>some other requirements..
> >>>Yes, you suggested to allow only asterisk. Implement full regular
> >>>expression
> >>>efficiently as Dmitri would be quite problematic since ldb doesn't
> >>>support
> >>>regex lookup thus we would have to do this ourselves and therefore we
> >>>would
> >>>loose indices, or am I wrong?
> >>I guess we'd have to grab all the entries and filter them ourselves..
> >>
> >>(Yes, this is the reason I chose the asterisk notation in the first
> >>place)
> >>_______________________________________________
> >>sssd-devel mailing list
> >>sssd-devel@lists.fedorahosted.org
> >>https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
> >
> >Several points:
> >
> >- IMO having a full regular expression support will be an overhead.
> >- "Begins with" filtering with * to indicate the remaining part is good
> >enough
> >- I do not think we should rely on enumeration. I think we should do a
> >lookup since these operations will be rare.

Yes, but as a second step, because back end currently only supports
looking up a single entry (name=dpal) or all of them (name=*) which
triggers enumeration.

But requiring enumeration /now/ and working on the filter-based lookups
later would allow us to finish the dbus responder changes already.

> 
> In my opinion:
> 
> List methods (i.e. those that return list of objects) should return only
> those objects that are already cached. If the caller wants all of them,
> enumeration should be turned on.

I think we'll need to add filter-based lookups as well to the back end.
Requiring enumeration is simply a no-go in large production systems.
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to