Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
SUSE:SLE-12-SP3:GA
pacemaker.13547
pacemaker-crmd-hard-error-if-remote-start-fails...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pacemaker-crmd-hard-error-if-remote-start-fails-missing-key.patch of Package pacemaker.13547
commit b9f61dd4818f262367da1a5148b7164f7ed772f5 Author: Ken Gaillot <kgaillot@redhat.com> Date: Wed Oct 25 18:12:39 2017 -0500 Fix: crmd: hard error if remote start fails due to missing key Previously, if the remote authentication key were missing or unreadable on the connection host, the connection would be repeatedly re-attempted (and failed) until the start timeout, then recovery would start the process over. Now, an unavailable key is treated as a hard error, banning the node from hosting the remote connection. Index: pacemaker-1.1.16+20170320.77ea74d/crmd/remote_lrmd_ra.c =================================================================== --- pacemaker-1.1.16+20170320.77ea74d.orig/crmd/remote_lrmd_ra.c +++ pacemaker-1.1.16+20170320.77ea74d/crmd/remote_lrmd_ra.c @@ -42,6 +42,7 @@ typedef struct remote_ra_cmd_s { char *action; /*! some string the client wants us to give it back */ char *userdata; + char *exit_reason; // descriptive text on error /*! start delay in ms */ int start_delay; /*! timer id used for start delay. */ @@ -114,6 +115,7 @@ free_cmd(gpointer user_data) free(cmd->rsc_id); free(cmd->action); free(cmd->userdata); + free(cmd->exit_reason); lrmd_key_value_freeall(cmd->params); free(cmd); } @@ -352,6 +354,7 @@ report_remote_ra_result(remote_ra_cmd_t op.rsc_id = cmd->rsc_id; op.op_type = cmd->action; op.user_data = cmd->userdata; + op.exit_reason = cmd->exit_reason; op.timeout = cmd->timeout; op.interval = cmd->interval; op.rc = cmd->rc; @@ -591,17 +594,24 @@ remote_lrm_op_callback(lrmd_event_data_t if (op->connection_rc < 0) { update_remaining_timeout(cmd); - /* There isn't much of a reason to reschedule if the timeout is too small */ - if (cmd->remaining_timeout > 3000) { + + if (op->connection_rc == -ENOKEY) { + // Hard error, don't retry + cmd->op_status = PCMK_LRM_OP_ERROR; + cmd->rc = PCMK_OCF_INVALID_PARAM; + cmd->exit_reason = strdup("Authentication key not readable"); + + } else if (cmd->remaining_timeout > 3000) { crm_trace("rescheduling start, remaining timeout %d", cmd->remaining_timeout); g_timeout_add(1000, retry_start_cmd_cb, lrm_state); return; + } else { crm_trace("can't reschedule start, remaining timeout too small %d", cmd->remaining_timeout); + cmd->op_status = PCMK_LRM_OP_TIMEOUT; + cmd->rc = PCMK_OCF_UNKNOWN_ERROR; } - cmd->op_status = PCMK_LRM_OP_TIMEOUT; - cmd->rc = PCMK_OCF_UNKNOWN_ERROR; } else { lrm_state_reset_tables(lrm_state);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor