On Wed, Sep 07, 2016 at 01:42:32PM +0300, Nikolai Kondrashov wrote:
> Hi Simo,
> 
> On 08/29/2016 11:47 PM, Sumit Bose wrote:
> > Then you do a normal user lookup but if there are groups configured in
> > the session_recording section you always do a SSS_DP_INITGROUPS instead
> > of a SSS_DP_USER if the entry is expired. I think here you can add some
> > improvement to reduce the number of SSS_DP_INITGROUPS calls which are
> > more expensive than SSS_DP_USER. User entries in the cache have two
> > timeout values SYSDB_CACHE_EXPIRE and SYSDB_INITGR_EXPIRE. The first is
> > the expiration time for the general user data (name, home directory,
> > shell etc) and is checked during the normal user lookup. The second is
> > the expiration time of the group-membership data. To make sure that
> > SSS_DP_INITGROUPS is only used when needed I would recommend to
> > additionally check if SYSDB_INITGR_EXPIRE is expired and only do a
> > SSS_DP_INITGROUPS in this case and a SSS_DP_USER in all other cases.
> > Currently both timestamps might not differ often but future enhancements
> > to the backends might change this.
> 
> I'm looking at this and am getting confused (old news, I know :).
> 
> Two cases where I use SSS_DP_INITGROUPS are invocations of check_cache, which
> has this code:
> 
>     /* if we have any reply let's check cache validity */
>     if (res->count > 0) {
>               /* ... */
>         if (req_type == SSS_DP_INITGROUPS) {
>             cacheExpire = ldb_msg_find_attr_as_uint64(res->msgs[0],
>                                                       SYSDB_INITGR_EXPIRE,
>                                                       0);
>         } else {
>             cacheExpire = ldb_msg_find_attr_as_uint64(res->msgs[0],
>                                                       SYSDB_CACHE_EXPIRE,
>                                                       0);
>         }
>               /* ... */
>       }
> 
> It seems to me that it already checks the cache as you suggested. Is that so?
> 
> The only other case is in nss_cmd_setpwent_step, which fetches users for
> getpwent using sss_dp_get_account_send and it doesn't seem that I could/should
> do anything there. Is that right?

Yes and no. The idea was to not unconditionally replace SSS_DP_USER with
SSS_DP_INITGROUPS if there are groups in the session recording
configuration. If we then add a new option to configure the
SYSDB_INITGR_EXPIRE independently of SYSDB_CACHE_EXPIRE (currently both
use the entry_cache_user_timeout config option) it would be possible to
reduce the number of SSS_DP_INITGROUPS to the backend while have the
user entry itself updated on the default rate with a plain SSS_DP_USER
call.

But all this might not be needed if a session recording attribute is
used as suggested by Simo. See my reply to Simo's email in this thread
for details about how this can be implemented.

bye,
Sumit

> 
> Thank you.
> 
> Nick
> _______________________________________________
> sssd-devel mailing list
> [email protected]
> https://lists.fedorahosted.org/admin/lists/[email protected]
_______________________________________________
sssd-devel mailing list
[email protected]
https://lists.fedorahosted.org/admin/lists/[email protected]

Reply via email to