Those 3 patches are from Jakub and I've just done some minor adjustments and add myself as co-author of the first 2 patches.
CI has passed: http://sssd-ci.duckdns.org/logs/job/51/55/summary.html Best Regards, -- Fabiano Fidêncio
From aa6204816cde0a7d75b9303916d038ed06e467ba Mon Sep 17 00:00:00 2001 From: Jakub Hrozek <jhro...@redhat.com> Date: Sun, 8 May 2016 14:41:35 +0200 Subject: [PATCH 1/3] MONITOR: Remove the no longer used diag_cmd command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After introducing the watchdog, the diag_cmd is longer used and makes no sense trying to make it usable by watchdog as the result of "pstack %p" seems next to useless in this context. Co-author: Fabiano Fidêncio <fiden...@redhat.com> Related: https://fedorahosted.org/sssd/ticket/3051 --- src/confdb/confdb.h | 1 - src/config/SSSDConfig/__init__.py.in | 1 - src/config/SSSDConfigTest.py | 1 - src/config/cfg_rules.ini | 9 -- src/config/etc/sssd.api.conf | 1 - src/monitor/monitor.c | 163 ----------------------------------- 6 files changed, 176 deletions(-) diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 72adbd8..58a085b 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -73,7 +73,6 @@ #define CONFDB_MONITOR_DEFAULT_DOMAIN "default_domain_suffix" #define CONFDB_MONITOR_OVERRIDE_SPACE "override_space" #define CONFDB_MONITOR_USER_RUNAS "user" -#define CONFDB_MONITOR_PRE_KILL_CMD "diag_cmd" #define CONFDB_MONITOR_CERT_VERIFICATION "certificate_verification" /* Both monitor and domains */ diff --git a/src/config/SSSDConfig/__init__.py.in b/src/config/SSSDConfig/__init__.py.in index ac53878..f99ded9 100644 --- a/src/config/SSSDConfig/__init__.py.in +++ b/src/config/SSSDConfig/__init__.py.in @@ -51,7 +51,6 @@ option_strings = { 'reconnection_retries' : _('Number of times to attempt connection to Data Providers'), 'fd_limit' : _('The number of file descriptors that may be opened by this responder'), 'client_idle_timeout' : _('Idle time before automatic disconnection of a client'), - 'diag_cmd' : _('The command to run when a service ping times out'), # [sssd] 'services' : _('SSSD Services to start'), diff --git a/src/config/SSSDConfigTest.py b/src/config/SSSDConfigTest.py index 00c688f..a9ad001 100755 --- a/src/config/SSSDConfigTest.py +++ b/src/config/SSSDConfigTest.py @@ -309,7 +309,6 @@ class SSSDConfigTestSSSDService(unittest.TestCase): 'reconnection_retries', 'fd_limit', 'client_idle_timeout', - 'diag_cmd', 'description', 'certificate_verification', 'override_space'] diff --git a/src/config/cfg_rules.ini b/src/config/cfg_rules.ini index bd0116f..bc26ef5 100644 --- a/src/config/cfg_rules.ini +++ b/src/config/cfg_rules.ini @@ -25,7 +25,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # Monitor service option = services @@ -57,7 +56,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # Name service option = user_attributes @@ -96,7 +94,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # Authentication service option = offline_credentials_expiration @@ -130,7 +127,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # sudo service option = sudo_timed @@ -152,7 +148,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # autofs service option = autofs_negative_timeout @@ -173,7 +168,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # ssh service option = ssh_hash_known_hosts @@ -196,7 +190,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # PAC responder option = allowed_uids @@ -218,7 +211,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd # InfoPipe responder option = allowed_uids @@ -239,7 +231,6 @@ option = fd_limit option = client_idle_timeout option = force_timeout option = description -option = diag_cmd #Available provider types option = id_provider diff --git a/src/config/etc/sssd.api.conf b/src/config/etc/sssd.api.conf index 5ac6f79..59d6fae 100644 --- a/src/config/etc/sssd.api.conf +++ b/src/config/etc/sssd.api.conf @@ -15,7 +15,6 @@ fd_limit = int, None, false client_idle_timeout = int, None, false force_timeout = int, None, false description = str, None, false -diag_cmd = str, None, false [sssd] # Monitor service diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index f154d8e..c76ca11 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -112,7 +112,6 @@ struct mt_svc { char *identity; pid_t pid; - char *diag_cmd; int kill_time; struct tevent_timer *kill_timer; @@ -373,77 +372,6 @@ static int add_svc_conn_spy(struct mt_svc *svc) return EOK; } -static char *expand_diag_cmd(struct mt_svc *svc, - const char *template) -{ - TALLOC_CTX *tmp_ctx = NULL; - char *copy; - char *p_copy; - char *n; - char *result = NULL; - char action; - char *res = NULL; - - if (template == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "Missing template.\n"); - return NULL; - } - - tmp_ctx = talloc_new(NULL); - if (!tmp_ctx) return NULL; - - copy = talloc_strdup(tmp_ctx, template); - if (copy == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "talloc_strdup failed.\n"); - goto done; - } - - result = talloc_strdup(tmp_ctx, ""); - if (result == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "talloc_strdup failed.\n"); - goto done; - } - - p_copy = copy; - while ((n = strchr(p_copy, '%')) != NULL) { - *n = '\0'; - n++; - if ( *n == '\0' ) { - DEBUG(SSSDBG_CRIT_FAILURE, - "format error, single %% at the end of the template.\n"); - goto done; - } - - action = *n; - switch (action) { - case 'p': - result = talloc_asprintf_append(result, "%s%d", p_copy, svc->pid); - break; - default: - DEBUG(SSSDBG_CRIT_FAILURE, - "format error, unknown template [%%%c].\n", *n); - goto done; - } - - if (result == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "talloc_asprintf_append failed.\n"); - goto done; - } - - p_copy = n + 1; - } - - result = talloc_asprintf_append(result, "%s", p_copy); - if (result == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "talloc_asprintf_append failed.\n"); - goto done; - } - - res = talloc_move(svc, &result); -done: - talloc_zfree(tmp_ctx); - return res; -} static void svc_child_info(struct mt_svc *svc, int wait_status) { @@ -467,82 +395,6 @@ static void svc_child_info(struct mt_svc *svc, int wait_status) } } -static void svc_diag_cmd_exit_handler(int pid, int wait_status, void *pvt) -{ - struct mt_svc *svc = talloc_get_type(pvt, struct mt_svc); - - svc_child_info(svc, wait_status); -} - -static void svc_run_diag_cmd(struct mt_svc *svc) -{ - pid_t pkc_pid; - char **args; - int ret; - int debug_fd; - char *diag_cmd; - struct sss_child_ctx *diag_child_ctx; - - if (svc->diag_cmd == NULL) { - return; - } - - pkc_pid = fork(); - if (pkc_pid != 0) { - /* parent, schedule SIGKILL */ - - ret = sss_child_register(svc, - svc->mt_ctx->sigchld_ctx, - pkc_pid, - svc_diag_cmd_exit_handler, - svc, - &diag_child_ctx); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, "Cannot register child %d\n", pkc_pid); - /* Try to go on ... */ - } - - return; - } - - /* child, execute diagnostics */ - diag_cmd = expand_diag_cmd(svc, svc->diag_cmd); - if (diag_cmd == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to expand [%s]\n", svc->diag_cmd); - _exit(1); - } - - if (debug_level >= SSSDBG_TRACE_LIBS) { - debug_fd = get_fd_from_debug_file(); - ret = dup2(debug_fd, STDERR_FILENO); - if (ret == -1) { - ret = errno; - DEBUG(SSSDBG_MINOR_FAILURE, - "dup2 failed for stderr [%d][%s].\n", ret, sss_strerror(ret)); - /* failure to redirect stderr is not fatal */ - } - - ret = dup2(debug_fd, STDOUT_FILENO); - if (ret == -1) { - ret = errno; - DEBUG(SSSDBG_MINOR_FAILURE, - "dup2 failed for stdout [%d][%s].\n", ret, sss_strerror(ret)); - /* failure to redirect stdout is not fatal */ - } - } - - args = parse_args(diag_cmd); - execvp(args[0], args); - - /* If we are here, exec() has failed - * Print errno and abort quickly */ - ret = errno; - DEBUG(SSSDBG_FATAL_FAILURE, - "Could not exec %s, reason: %s\n", svc->diag_cmd, strerror(ret)); - _exit(1); -} - static int mark_service_as_started(struct mt_svc *svc) { struct mt_ctx *ctx = svc->mt_ctx; @@ -712,8 +564,6 @@ static int monitor_kill_service (struct mt_svc *svc) return EOK; } - svc_run_diag_cmd(svc); - /* Set up a timer to send SIGKILL if this process * doesn't exit within the configured interval */ @@ -1147,19 +997,6 @@ static errno_t get_kill_config(struct mt_ctx *ctx, const char *path, { errno_t ret; - ret = confdb_get_string(ctx->cdb, svc, path, - CONFDB_MONITOR_PRE_KILL_CMD, - NULL, &svc->diag_cmd); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to get diagnostics command for %s\n", svc->name); - return ret; - } - if (svc->diag_cmd) { - DEBUG(SSSDBG_CONF_SETTINGS, - "Diagnostics command: [%s]\n", svc->diag_cmd); - } - ret = confdb_get_int(ctx->cdb, path, CONFDB_SERVICE_FORCE_TIMEOUT, MONITOR_DEF_FORCE_TIME, &svc->kill_time); -- 2.7.4
From 7954e0254752d0a830a0501f23a6a93d0345e5ce Mon Sep 17 00:00:00 2001 From: Jakub Hrozek <jhro...@redhat.com> Date: Sun, 8 May 2016 14:46:25 +0200 Subject: [PATCH 2/3] MONITOR: Remove the no longer used kill_service command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After introducing the watchdog, the force_timeout option is no longer used. Co-author: Fabiano Fidêncio <fiden...@redhat.com> Resolves: https://fedorahosted.org/sssd/ticket/3052 --- src/confdb/confdb.h | 1 - src/config/SSSDConfig/__init__.py.in | 1 - src/config/SSSDConfigTest.py | 3 - src/config/cfg_rules.ini | 10 --- src/config/etc/sssd.api.conf | 2 - src/man/sssd.conf.5.xml | 33 -------- src/monitor/monitor.c | 141 ----------------------------------- 7 files changed, 191 deletions(-) diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 58a085b..401e5fb 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -58,7 +58,6 @@ #define CONFDB_SERVICE_DEBUG_TIMESTAMPS "debug_timestamps" #define CONFDB_SERVICE_DEBUG_MICROSECONDS "debug_microseconds" #define CONFDB_SERVICE_DEBUG_TO_FILES "debug_to_files" -#define CONFDB_SERVICE_FORCE_TIMEOUT "force_timeout" #define CONFDB_SERVICE_RECON_RETRIES "reconnection_retries" #define CONFDB_SERVICE_FD_LIMIT "fd_limit" #define CONFDB_SERVICE_ALLOWED_UIDS "allowed_uids" diff --git a/src/config/SSSDConfig/__init__.py.in b/src/config/SSSDConfig/__init__.py.in index f99ded9..8a4e99c 100644 --- a/src/config/SSSDConfig/__init__.py.in +++ b/src/config/SSSDConfig/__init__.py.in @@ -46,7 +46,6 @@ option_strings = { 'debug_microseconds' : _('Include microseconds in timestamps in debug logs'), 'debug_to_files' : _('Write debug messages to logfiles'), 'timeout' : _('Watchdog timeout before restarting service'), - 'force_timeout' : _('Timeout between three failed ping checks and forcibly killing the service'), 'command' : _('Command to start service'), 'reconnection_retries' : _('Number of times to attempt connection to Data Providers'), 'fd_limit' : _('The number of file descriptors that may be opened by this responder'), diff --git a/src/config/SSSDConfigTest.py b/src/config/SSSDConfigTest.py index a9ad001..ea8c2b6 100755 --- a/src/config/SSSDConfigTest.py +++ b/src/config/SSSDConfigTest.py @@ -293,7 +293,6 @@ class SSSDConfigTestSSSDService(unittest.TestCase): 'services', 'domains', 'timeout', - 'force_timeout', 'sbus_timeout', 're_expression', 'full_name_format', @@ -505,7 +504,6 @@ class SSSDConfigTestSSSDDomain(unittest.TestCase): 'min_id', 'max_id', 'timeout', - 'force_timeout', 'offline_timeout', 'try_inotify', 'command', @@ -874,7 +872,6 @@ class SSSDConfigTestSSSDDomain(unittest.TestCase): 'min_id', 'max_id', 'timeout', - 'force_timeout', 'offline_timeout', 'try_inotify', 'command', diff --git a/src/config/cfg_rules.ini b/src/config/cfg_rules.ini index bc26ef5..0ef9726 100644 --- a/src/config/cfg_rules.ini +++ b/src/config/cfg_rules.ini @@ -23,7 +23,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # Monitor service @@ -54,7 +53,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # Name service @@ -92,7 +90,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # Authentication service @@ -125,7 +122,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # sudo service @@ -146,7 +142,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # autofs service @@ -166,7 +161,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # ssh service @@ -188,7 +182,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # PAC responder @@ -209,7 +202,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description # InfoPipe responder @@ -229,7 +221,6 @@ option = command option = reconnection_retries option = fd_limit option = client_idle_timeout -option = force_timeout option = description #Available provider types @@ -250,7 +241,6 @@ option = timeout option = try_inotify option = enumerate option = subdomain_enumerate -option = force_timeout option = offline_timeout option = cache_credentials option = cache_credentials_minimal_first_factor_length diff --git a/src/config/etc/sssd.api.conf b/src/config/etc/sssd.api.conf index 59d6fae..eab8584 100644 --- a/src/config/etc/sssd.api.conf +++ b/src/config/etc/sssd.api.conf @@ -13,7 +13,6 @@ command = str, None, false reconnection_retries = int, None, false fd_limit = int, None, false client_idle_timeout = int, None, false -force_timeout = int, None, false description = str, None, false [sssd] @@ -119,7 +118,6 @@ timeout = int, None, false try_inotify = bool, None, false enumerate = bool, None, false subdomain_enumerate = str, None, false -force_timeout = int, None, false offline_timeout = int, None, false cache_credentials = bool, None, false cache_credentials_minimal_first_factor_length = int, None, false diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml index e95a7e7..ae291e0 100644 --- a/src/man/sssd.conf.5.xml +++ b/src/man/sssd.conf.5.xml @@ -549,22 +549,6 @@ </listitem> </varlistentry> <varlistentry> - <term>force_timeout (integer)</term> - <listitem> - <para> - If a service is not responding to ping checks (see - the <quote>timeout</quote> option), it is first sent - the SIGTERM signal that instructs it to quit gracefully. - If the service does not terminate after <quote>force_timeout</quote> - seconds, the monitor will forcibly shut it down by - sending a SIGKILL signal. - </para> - <para> - Default: 60 - </para> - </listitem> - </varlistentry> - <varlistentry> <term>offline_timeout (integer)</term> <listitem> <para> @@ -1453,23 +1437,6 @@ pam_account_locked_message = Account locked, please contact help desk. </varlistentry> <varlistentry> - <term>force_timeout (integer)</term> - <listitem> - <para> - If a service is not responding to ping checks (see - the <quote>timeout</quote> option), it is first sent - the SIGTERM signal that instructs it to quit gracefully. - If the service does not terminate after <quote>force_timeout</quote> - seconds, the monitor will forcibly shut it down by - sending a SIGKILL signal. - </para> - <para> - Default: 60 - </para> - </listitem> - </varlistentry> - - <varlistentry> <term>entry_cache_timeout (integer)</term> <listitem> <para> diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index c76ca11..900a5a6 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -114,8 +114,6 @@ struct mt_svc { int kill_time; - struct tevent_timer *kill_timer; - bool svc_started; int restarts; @@ -176,8 +174,6 @@ static int monitor_service_init(struct sbus_connection *conn, void *data); static int service_signal_reset_offline(struct mt_svc *svc); -static int monitor_kill_service (struct mt_svc *svc); - static int get_service_config(struct mt_ctx *ctx, const char *name, struct mt_svc **svc_cfg); static int get_provider_config(struct mt_ctx *ctx, const char *name, @@ -542,95 +538,6 @@ static int monitor_dbus_init(struct mt_ctx *ctx) } static void monitor_restart_service(struct mt_svc *svc); -static void mt_svc_sigkill(struct tevent_context *ev, - struct tevent_timer *te, - struct timeval t, void *ptr); -static int monitor_kill_service (struct mt_svc *svc) -{ - int ret; - struct timeval tv; - - ret = kill(svc->pid, SIGTERM); - if (ret == -1) { - ret = errno; - DEBUG(SSSDBG_FATAL_FAILURE, - "Sending signal to child (%s:%d) failed: [%d]: %s! " - "Ignore and pretend child is dead.\n", - svc->name, svc->pid, ret, strerror(ret)); - /* The only thing we can try here is to launch a new process - * and hope that it works. - */ - monitor_restart_service(svc); - return EOK; - } - - /* Set up a timer to send SIGKILL if this process - * doesn't exit within the configured interval - */ - tv = tevent_timeval_current_ofs(svc->kill_time, 0); - svc->kill_timer = tevent_add_timer(svc->mt_ctx->ev, - svc, - tv, - mt_svc_sigkill, - svc); - if (svc->kill_timer == NULL) { - /* Nothing much we can do */ - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to allocate timed event: mt_svc_sigkill.\n"); - /* We'll just have to hope that the SIGTERM succeeds */ - } - return EOK; -} - -static void mt_svc_sigkill(struct tevent_context *ev, - struct tevent_timer *te, - struct timeval t, void *ptr) -{ - int ret; - struct mt_svc *svc = talloc_get_type(ptr, struct mt_svc); - - DEBUG(SSSDBG_FATAL_FAILURE, - "[%s][%d] is not responding to SIGTERM. Sending SIGKILL.\n", - svc->name, svc->pid); - sss_log(SSS_LOG_ERR, - "[%s][%d] is not responding to SIGTERM. Sending SIGKILL.\n", - svc->name, svc->pid); - - /* timer was succesfully executed and it will be released by tevent */ - svc->kill_timer = NULL; - - ret = kill(svc->pid, SIGKILL); - if (ret != EOK) { - ret = errno; - DEBUG(SSSDBG_FATAL_FAILURE, - "Sending signal to child (%s:%d) failed! " - "Ignore and pretend child is dead.\n", - svc->name, svc->pid); - - if (ret == ESRCH) { - /* The process doesn't exist - * This most likely means we hit a race where - * the SIGTERM concluded just after the timer - * fired but before we called kill() here. - * We'll just do nothing, since the - * mt_svc_exit_handler() should be doing the - * necessary work. - */ - return; - } - - /* Something went really wrong. - * The only thing we can try here is to launch a new process - * and hope that it works. - */ - monitor_restart_service(svc); - } - - /* The process should terminate immediately and then be - * restarted by the mt_svc_exit_handler() - */ - return; -} static void reload_reply(DBusPendingCall *pending, void *data) { @@ -708,7 +615,6 @@ static int service_signal(struct mt_svc *svc, const char *svc_signal) DEBUG(SSSDBG_FATAL_FAILURE, "Out of memory trying to allocate memory to invoke: %s\n", svc_signal); - monitor_kill_service(svc); return ENOMEM; } @@ -992,32 +898,6 @@ static int get_monitor_config(struct mt_ctx *ctx) return EOK; } -static errno_t get_kill_config(struct mt_ctx *ctx, const char *path, - struct mt_svc *svc) -{ - errno_t ret; - - ret = confdb_get_int(ctx->cdb, path, - CONFDB_SERVICE_FORCE_TIMEOUT, - MONITOR_DEF_FORCE_TIME, &svc->kill_time); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to get kill timeout for %s\n", svc->name); - return ret; - } - - /* 'force_timeout = 0' should be translated to the default */ - if (svc->kill_time == 0) { - svc->kill_time = MONITOR_DEF_FORCE_TIME; - } - - DEBUG(SSSDBG_CONF_SETTINGS, - "Time between SIGTERM and SIGKILL for [%s]: [%d]\n", - svc->name, svc->kill_time); - - return EOK; -} - /* This is a temporary function that returns false if the service * being started was only tested when running as root. */ @@ -1154,14 +1034,6 @@ static int get_service_config(struct mt_ctx *ctx, const char *name, } } - ret = get_kill_config(ctx, path, svc); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to get kill timeouts for %s\n", svc->name); - talloc_free(svc); - return ret; - } - svc->last_restart = now; *svc_cfg = svc; @@ -1249,14 +1121,6 @@ static int get_provider_config(struct mt_ctx *ctx, const char *name, return ret; } - ret = get_kill_config(ctx, path, svc); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to get kill timeouts for %s\n", svc->name); - talloc_free(svc); - return ret; - } - talloc_free(path); /* if no provider is present do not run the domain */ @@ -2537,11 +2401,6 @@ static void mt_svc_exit_handler(int pid, int wait_status, void *pvt) "SIGCHLD handler of service %s called\n", svc->name); svc_child_info(svc, wait_status); - /* Clear the kill_timer so we don't try to SIGKILL it after it's - * already gone. - */ - talloc_zfree(svc->kill_timer); - /* Check the number of restart tries and relaunch the service */ monitor_restart_service(svc); -- 2.7.4
From 1302c5a95ac36dd674c8795cda0082b84d30978d Mon Sep 17 00:00:00 2001 From: Jakub Hrozek <jhro...@redhat.com> Date: Mon, 15 Aug 2016 12:54:20 +0200 Subject: [PATCH 3/3] WATCHDOG: define and use _MAX_TICKS as 3 Instead of using the number 3 directly, let's introduce and use WATCHDOG_MAX_TICKS. --- src/util/util_watchdog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/util/util_watchdog.c b/src/util/util_watchdog.c index 5032fdd..5a64dfa 100644 --- a/src/util/util_watchdog.c +++ b/src/util/util_watchdog.c @@ -22,6 +22,7 @@ #include "util/util.h" #define WATCHDOG_DEF_INTERVAL 10 +#define WATCHDOG_MAX_TICKS 3 /* this is intentionally a global variable */ struct watchdog_ctx { @@ -38,9 +39,9 @@ struct watchdog_ctx { * signals either */ static void watchdog_handler(int sig) { - /* if 3 ticks passed by kills itself */ + /* if a pre-defined number of ticks passed by kills itself */ - if (__sync_add_and_fetch(&watchdog_ctx.ticks, 1) > 3) { + if (__sync_add_and_fetch(&watchdog_ctx.ticks, 1) > WATCHDOG_MAX_TICKS) { DEBUG(SSSDBG_FATAL_FAILURE, "Watchdog timer overflow, killing process!\n"); orderly_shutdown(1); -- 2.7.4
_______________________________________________ sssd-devel mailing list sssd-devel@lists.fedorahosted.org https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org