Bug 867933

Summary: invalidating the memcache with sss_cache doesn't work if the sssd is not running
Product: Red Hat Enterprise Linux 6 Reporter: Jakub Hrozek <jhrozek>
Component: sssdAssignee: Jakub Hrozek <jhrozek>
Status: CLOSED ERRATA QA Contact: Kaushik Banerjee <kbanerje>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: grajaiya, jgalipea, pbrezina
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: sssd-1.9.2-7.el6 Doc Type: Bug Fix
Doc Text:
No Documentation Needed
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 09:37:48 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jakub Hrozek 2012-10-18 15:29:51 UTC
This bug is created as a clone of upstream ticket:
https://fedorahosted.org/sssd/ticket/1584

Stef found this corner case while preparing for the test day. If the SSSD is not running, for instance because the machine has left the domain, the memory cache files are still around and the processes that started before the machine left the domain can still query users from the domain.

The memcache can't even be invalidated with sss_cache, because sss_cache only sends a signal to the NSS responder.

This is how we should fix it:
1. make the API to invalidate the cache public
2. in the sss_cache tool, carefully detect if the sss_nss process is running, for example by checking for the responder socket or the PID.
3. if the sss_nss process is running, proceed with sending the signal
4. if the sss_nss process is not running, invalidate the memcache.

We should also check if all of the above works with SELinux.

Comment 2 Kaushik Banerjee 2013-01-02 07:15:41 UTC
Verified in version 1.9.2-41.el6

Output from beaker automation run:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [   LOG    ] :: inmemory04 bz867933 sss_cache invalidates the in-memory cache when sssd is stopped
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Stopping sssd: [  OK  ]
:: [   PASS   ] :: Running 'sss_cache -U --domain=LDAP'
:: [   PASS   ] :: Running 'sss_cache -G --domain=LDAP'
Starting sssd: [  OK  ]
[  OK  ]
:: [   PASS   ] :: Running 'service sssd start'
puser1:*:1001:1001:Posix User1:/export/puser1:
:: [   PASS   ] :: Running 'getent passwd puser1'
Group1:*:1001:
:: [   PASS   ] :: Running 'getent group Group1'
:: [   PASS   ] :: File '/var/log/sssd/sssd_LDAP.log' should contain 'Got request for '
:: [   PASS   ] :: File '/var/log/sssd/sssd_LDAP.log' should contain 'uid=puser1'
:: [   PASS   ] :: File '/var/log/sssd/sssd_LDAP.log' should contain 'cn=Group1'
'6e237c5d-13d2-44e1-9962-b79ee33bf01a'
inmemory04-bz867933-sss-cache-invalidates-the-in-memory-cache-when-sssd-is-stopped result: PASS

Comment 3 errata-xmlrpc 2013-02-21 09:37:48 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-0508.html