summaryrefslogtreecommitdiff
path: root/src/providers
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2013-05-13 10:30:48 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-06-10 20:30:57 +0200
commit0cf0e2d758d09e9b314ba72ce6638df10b258462 (patch)
tree4b7e85b222faff8a921095fbc3e8d8da898e38cb /src/providers
parentb79e0e50a935d108173ca3062f2afe16103fcb1d (diff)
downloadsssd-0cf0e2d758d09e9b314ba72ce6638df10b258462.tar.gz
sssd-0cf0e2d758d09e9b314ba72ce6638df10b258462.tar.bz2
sssd-0cf0e2d758d09e9b314ba72ce6638df10b258462.zip
back end: add refresh expired records periodic task
https://fedorahosted.org/sssd/ticket/1713 Add new option refresh_expired_interval.
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/data_provider_be.c23
-rw-r--r--src/providers/dp_backend.h3
-rw-r--r--src/providers/dp_ptask.h3
-rw-r--r--src/providers/dp_refresh.h3
4 files changed, 32 insertions, 0 deletions
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index f3b50af7..1e11bfd2 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -42,6 +42,8 @@
#include "sbus/sssd_dbus.h"
#include "providers/dp_backend.h"
#include "providers/fail_over.h"
+#include "providers/dp_refresh.h"
+#include "providers/dp_ptask.h"
#include "util/child_common.h"
#include "resolv/async_resolv.h"
#include "monitor/monitor_interfaces.h"
@@ -2657,6 +2659,27 @@ int be_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}
+ /* Initialize be_refresh periodic task. */
+ ctx->refresh_ctx = be_refresh_ctx_init(ctx);
+ if (ctx->refresh_ctx == NULL) {
+ DEBUG(SSSDBG_FATAL_FAILURE, ("Unable to initialize refresh_ctx\n"));
+ ret = ENOMEM;
+ goto fail;
+ }
+
+ if (ctx->domain->refresh_expired_interval > 0) {
+ ret = be_ptask_create(ctx, ctx, ctx->domain->refresh_expired_interval,
+ 30, 5, ctx->domain->refresh_expired_interval,
+ BE_PTASK_OFFLINE_SKIP,
+ be_refresh_send, be_refresh_recv,
+ ctx->refresh_ctx, "Refresh Records", NULL);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_FATAL_FAILURE,
+ ("Unable to initialize refresh periodic task\n"));
+ goto fail;
+ }
+ }
+
ret = load_backend_module(ctx, BET_ID,
&ctx->bet_info[BET_ID], NULL);
if (ret != EOK) {
diff --git a/src/providers/dp_backend.h b/src/providers/dp_backend.h
index 9a8df4cd..638b878c 100644
--- a/src/providers/dp_backend.h
+++ b/src/providers/dp_backend.h
@@ -24,6 +24,7 @@
#include "providers/data_provider.h"
#include "providers/fail_over.h"
+#include "providers/dp_refresh.h"
#include "util/child_common.h"
#include "db/sysdb.h"
@@ -141,6 +142,8 @@ struct be_ctx {
struct loaded_be loaded_be[BET_MAX];
struct bet_info bet_info[BET_MAX];
+ struct be_refresh_ctx *refresh_ctx;
+
size_t check_online_ref_count;
};
diff --git a/src/providers/dp_ptask.h b/src/providers/dp_ptask.h
index 5a1d62c8..ae5f78d5 100644
--- a/src/providers/dp_ptask.h
+++ b/src/providers/dp_ptask.h
@@ -27,6 +27,9 @@
#include "providers/dp_backend.h"
+/* solve circular dependency */
+struct be_ctx;
+
struct be_ptask;
/**
diff --git a/src/providers/dp_refresh.h b/src/providers/dp_refresh.h
index cae2f787..a7b32470 100644
--- a/src/providers/dp_refresh.h
+++ b/src/providers/dp_refresh.h
@@ -27,6 +27,9 @@
#include "providers/dp_backend.h"
#include "providers/dp_ptask.h"
+/* solve circular dependency */
+struct be_ctx;
+
/**
* name_list contains SYSDB_NAME of all expired records.
*/