diff options
author | Pavel Reichl <preichl@redhat.com> | 2015-09-21 10:26:20 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-09-30 16:37:57 +0200 |
commit | 3fb1ee96f508784d7e06f079111d4d32d401a99b (patch) | |
tree | e7c3ea1ba447d82d0a72208671665afee3e31ea1 /src/confdb | |
parent | 1e87219471c1220c773ea75b211ad0a4d087d869 (diff) | |
download | sssd-3fb1ee96f508784d7e06f079111d4d32d401a99b.tar.gz sssd-3fb1ee96f508784d7e06f079111d4d32d401a99b.tar.xz sssd-3fb1ee96f508784d7e06f079111d4d32d401a99b.zip |
confdb: warn if memcache_timeout > than entry_cache
Only group and user records are cached in memory cache so only timeouts
for those are checked.
Resolves:
https://fedorahosted.org/sssd/ticket/2176
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/confdb')
-rw-r--r-- | src/confdb/confdb.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index c097aad77..d811f7cbf 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -827,6 +827,7 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, uint32_t entry_cache_timeout; char *default_domain; bool fqnames_default = false; + int memcache_timeout; tmp_ctx = talloc_new(mem_ctx); if (!tmp_ctx) return ENOMEM; @@ -851,6 +852,16 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, goto done; } + ret = confdb_get_int(cdb, + CONFDB_NSS_CONF_ENTRY, + CONFDB_MEMCACHE_TIMEOUT, + 300, &memcache_timeout); + if (ret != EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Unable to get memory cache entry timeout.\n"); + goto done; + } + domain = talloc_zero(mem_ctx, struct sss_domain_info); if (!domain) { ret = ENOMEM; @@ -1078,6 +1089,13 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, goto done; } + if (domain->user_timeout < memcache_timeout) { + DEBUG(SSSDBG_CONF_SETTINGS, + "%s is less than %s. User records will not be updated before " + "memory cache entry expires.\n", + CONFDB_DOMAIN_USER_CACHE_TIMEOUT, CONFDB_MEMCACHE_TIMEOUT); + } + /* Override the group cache timeout, if specified */ ret = get_entry_as_uint32(res->msgs[0], &domain->group_timeout, CONFDB_DOMAIN_GROUP_CACHE_TIMEOUT, @@ -1089,6 +1107,13 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, goto done; } + if (domain->group_timeout < memcache_timeout) { + DEBUG(SSSDBG_CONF_SETTINGS, + "%s is less than %s. Group records will not be updated before " + "memory cache entry expires.\n", + CONFDB_DOMAIN_GROUP_CACHE_TIMEOUT, CONFDB_MEMCACHE_TIMEOUT); + } + /* Override the netgroup cache timeout, if specified */ ret = get_entry_as_uint32(res->msgs[0], &domain->netgroup_timeout, CONFDB_DOMAIN_NETGROUP_CACHE_TIMEOUT, |