[SSSD] [sssd PR#5734][comment] MONITOR: Return success from genconf with no config

2021-08-12 Thread sumit-bose
  URL: https://github.com/SSSD/sssd/pull/5734
Title: #5734: MONITOR: Return success from genconf with no config

sumit-bose commented:
"""
> @sumit-bose Would you mind giving ack for this?

Hi,

I'm fine with the fix, so ACK from my side. But since I'm a bit biased it would 
be nice if @pbrezina or @alexey-tikhonov can have a short look as well.

bye,
Sumit
"""

See the full comment at 
https://github.com/SSSD/sssd/pull/5734#issuecomment-897804429
___
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure


[SSSD] [sssd PR#5734][comment] MONITOR: Return success from genconf with no config

2021-08-12 Thread joakim-tjernlund
  URL: https://github.com/SSSD/sssd/pull/5734
Title: #5734: MONITOR: Return success from genconf with no config

joakim-tjernlund commented:
"""
Can this be merged soon? Would save me the trouble to hack around this issue.
"""

See the full comment at 
https://github.com/SSSD/sssd/pull/5734#issuecomment-897589013
___
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure


[SSSD] [sssd PR#5745][opened] cache_req: cache_first fix for fully-qualified names

2021-08-12 Thread sumit-bose
   URL: https://github.com/SSSD/sssd/pull/5745
Author: sumit-bose
 Title: #5745: cache_req: cache_first fix for fully-qualified names
Action: opened

PR body:
"""
With commit b572871236a7f9059d375a5ab1bff8cbfd519956 "cache_req:
introduce cache_behavior enumeration" the processing of cache and
backend lookups was refactored. Unfortunately this introduce an issue
when looking up users or groups with a fully-qualified name and the
'cache_first = True' option is set.

In the old code the case when a domain name is available was handle
before the cache_first first option was evaluated and cache_req was
instructed to first look in the cache and then call the backend if the
object is not available or expired, i.e. the default behavior. Since
only a single domain is involved this is in agreement with 'cache_first
= True' and only a single iteration is needed.

In the new code the cache_first option is evaluated before the presence
of a domain name is checked and as a result even for single domain
searches the first cache_req iteration is only looking at the cache and
will not call the backend. This means the now for searches with a
fully-qualified name a second iteration is needed if the object was not
found in the cache.

Unfortunately the old exit condition that if a domain name is present
only a single iteration is needed is still present in the new code which
effectively makes requests with fully-qualified named only search the
cache and never call the backends. This patch removes the exit condition
and does a second iteration for fully-qualified names as well if
'cache_first = True' is set.

Resolves: https://github.com/SSSD/sssd/issues/5744
"""

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/5745/head:pr5745
git checkout pr5745
From 356a0ab14bd104affc11fffa6f0ee7356fbb175f Mon Sep 17 00:00:00 2001
From: Sumit Bose 
Date: Thu, 12 Aug 2021 09:27:57 +0200
Subject: [PATCH] cache_req: cache_first fix for fully-qualified names

With commit b572871236a7f9059d375a5ab1bff8cbfd519956 "cache_req:
introduce cache_behavior enumeration" the processing of cache and
backend lookups was refactored. Unfortunately this introduce an issue
when looking up users or groups with a fully-qualified name and the
'cache_first = True' option is set.

In the old code the case when a domain name is available was handle
before the cache_first first option was evaluated and cache_req was
instructed to first look in the cache and then call the backend if the
object is not available or expired, i.e. the default behavior. Since
only a single domain is involved this is in agreement with 'cache_first
= True' and only a single iteration is needed.

In the new code the cache_first option is evaluated before the presence
of a domain name is checked and as a result even for single domain
searches the first cache_req iteration is only looking at the cache and
will not call the backend. This means the now for searches with a
fully-qualified name a second iteration is needed if the object was not
found in the cache.

Unfortunately the old exit condition that if a domain name is present
only a single iteration is needed is still present in the new code which
effectively makes requests with fully-qualified named only search the
cache and never call the backends. This patch removes the exit condition
and does a second iteration for fully-qualified names as well if
'cache_first = True' is set.

Resolves: https://github.com/SSSD/sssd/issues/5744
---
 src/responder/common/cache_req/cache_req.c  |  3 +-
 src/tests/cmocka/test_responder_cache_req.c | 53 +
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/src/responder/common/cache_req/cache_req.c b/src/responder/common/cache_req/cache_req.c
index 750d655c19..56ec077f36 100644
--- a/src/responder/common/cache_req/cache_req.c
+++ b/src/responder/common/cache_req/cache_req.c
@@ -1331,8 +1331,7 @@ static errno_t cache_req_select_domains(struct tevent_req *req,
 
 state = tevent_req_data(req, struct cache_req_state);
 
-if ((state->cr->cache_behavior != CACHE_REQ_CACHE_FIRST)
-|| (domain_name != NULL)) {
+if (state->cr->cache_behavior != CACHE_REQ_CACHE_FIRST) {
 
 if (!state->first_iteration) {
 /* We're done here. */
diff --git a/src/tests/cmocka/test_responder_cache_req.c b/src/tests/cmocka/test_responder_cache_req.c
index 5cf7660e71..27a525f6ed 100644
--- a/src/tests/cmocka/test_responder_cache_req.c
+++ b/src/tests/cmocka/test_responder_cache_req.c
@@ -992,6 +992,56 @@ void test_user_by_name_missing_notfound(void **state)
 assert_true(test_ctx->dp_called);
 }
 
+void test_user_by_name_missing_notfound_cache_first(void **state)
+{
+struct cache_req_test_ctx *test_ctx = NULL;
+
+test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
+test_ctx->rctx->cache_first = true;
+
+/* Mock values. */
+will_return(__wrap_sss_dp_get_account_send, test_ctx);