Project

General

Profile

Actions

Bug #7223

closed

service_check_started_at_boot throws error on service boot status check

Added by Tomas Corej about 7 years ago. Updated 4 months ago.

Status:
Released
Priority:
N/A
Assignee:
Category:
Generic methods
Target version:
Severity:
UX impact:
User visibility:
Effort required:
Priority:
0
Regression:

Description

On fresh CentOS 7 install with systemd I found this possible bug in bundle service_check_started_at_boot. mariadb was disabled :

2015-09-22T14:09:40+0200 error:
/default/dispatcher/methods/'monitor'/default/caller/methods/'monitor'/default/monitor/methods/'mysql'/default/mysql_server/methods/'boot'/default/service_check_started_at_boot/methods/'check_run'/default/command_execution/commands/'/bin/systemctl is-enabled mariadb.service'[0]: Finished command related to promiser '/bin/systemctl is-enabled mariadb.service' -- an error occurred, returned 1
2015-09-22T14:09:40+0200 notice:
/default/dispatcher/methods/'monitor'/default/caller/methods/'monitor'/default/monitor/methods/'mysql'/default/mysql_server/methods/'boot'/default/service_check_started_at_boot/methods/'check_run'/default/command_execution/commands/'/bin/systemctl is-enabled mariadb.service'[0]: Q: ".../systemctl is-e": disabled
R: [ERROR] Promise could not be repaired, error encountered: Execute the command /bin/systemctl is-enabled mariadb.service
2015-09-22T14:09:40+0200 error:
/default/dispatcher/methods/'monitor'/default/caller/methods/'monitor'/default/monitor/methods/'mysql'/default/mysql_server/methods/'boot'/default/service_check_started_at_boot/methods/'check_run'[0]: Method 'command_execution' failed in some repairs
R: [ERROR] Promise could not be repaired, error encountered: Ensure that service mariadb is defined at boot
2015-09-22T14:09:40+0200 error: /default/dispatcher/methods/'monitor'/default/caller/methods/'monitor'/default/monitor/methods/'mysql'/default/mysql_server/methods/'boot'[0]: Method
'service_check_started_at_boot' failed in some repairs
error: /default/dispatcher/methods/'monitor'/default/caller/methods/'monitor'/default/monitor/methods/'mysql'[0]: Method 'mysql_server' failed in some repairs

in my policy file, bundle was called as follows:

"boot"            usebundle =>  service_check_started_at_boot("mariadb");

Command "/bin/systemctl is-enabled mariadb.service" returns code 1 because service mariadb is not enabled, but no action is taken to fix it.


Related issues 1 (0 open1 closed)

Has duplicate Rudder - Bug #7475: Ensure service at boot doesn't work on ncf 201511051154RejectedActions
Actions #1

Updated by Vincent MEMBRÉ about 7 years ago

  • Status changed from New to Discussion
  • Assignee set to Tomas Corej
  • Target version set to 0.x

In fact, the generic method you are using only check that the service is enabled at boot and does nothing ! to make it enable at boot, you should use 'service_ensure_started_at_boot' method.

Is it working for you with using that other method ?

Actions #2

Updated by Benoît PECCATTE almost 7 years ago

Hi Thomas,
Is the above answer good for you ?

Actions #3

Updated by Jonathan CLARKE almost 7 years ago

  • Related to Bug #7475: Ensure service at boot doesn't work on ncf 201511051154 added
Actions #4

Updated by Jonathan CLARKE almost 7 years ago

  • Status changed from Discussion to In progress
  • Assignee changed from Tomas Corej to Jonathan CLARKE
Actions #5

Updated by Jonathan CLARKE almost 7 years ago

  • Related to deleted (Bug #7475: Ensure service at boot doesn't work on ncf 201511051154)
Actions #6

Updated by Jonathan CLARKE almost 7 years ago

  • Has duplicate Bug #7475: Ensure service at boot doesn't work on ncf 201511051154 added
Actions #7

Updated by Jonathan CLARKE almost 7 years ago

I have reproduced this, and while the result is as expected (error if the service is not set at boot, success if it is), the output is very alarming:

rudder     info: Executing 'no timeout' ... '/bin/systemctl is-enabled postfix.service'
   error: Finished command related to promiser '/bin/systemctl is-enabled postfix.service' -- an error occurred, returned 1
  notice: Q: ".../systemctl is-e": disabled
rudder     info: Last 1 quoted lines were generated by promiser '/bin/systemctl is-enabled postfix.service'
rudder     info: Completed execution of '/bin/systemctl is-enabled postfix.service'
R: [DEBUG] Promise called ${promisers} with /bin/systemctl is-enabled postfix.service
R: [ERROR] Promise could not be repaired, error encountered: Execute the command /bin/systemctl is-enabled postfix.service
   error: Method 'command_execution' failed in some repairs
R: [DEBUG] Promise called ${promisers} with postfix
R: [ERROR] Promise could not be repaired, error encountered: Ensure that service postfix is defined at boot
R: @@test_service_check_started_at_boot@@result_error@@32377fd7-02fd-43d0-aab7-28460a91347b@@a3d571d3-578b-42b4-8fb3-2f22aa12973f@@3@@Service check at boot@@postfix@@2015-12-03 00:23:46+00:00##root@#Ensure that service postfix is defined at boot could not be repaired
   error: Method 'service_check_started_at_boot' failed in some repairs
   error: Method 'test_service_check_started_at_boot' failed in some repairs

(note also that the error: lines are displayed in red...)

My conclusion is that we should not be using command_execution* methods to test conditions, but rather rely on the builtin functions "returnszero" and "execresult" to avoid so much worrysome output on the console.

Actions #8

Updated by Jonathan CLARKE almost 7 years ago

  • Status changed from In progress to Pending technical review
  • Assignee changed from Jonathan CLARKE to Benoît PECCATTE
  • Pull Request set to https://github.com/Normation/ncf/pull/281
Actions #9

Updated by Jonathan CLARKE almost 7 years ago

  • Assignee changed from Benoît PECCATTE to Tomas Corej
Actions #10

Updated by Jonathan CLARKE almost 7 years ago

  • Assignee changed from Tomas Corej to Benoît PECCATTE
Actions #11

Updated by Jonathan CLARKE almost 7 years ago

  • Assignee changed from Benoît PECCATTE to Tomas Corej
Actions #12

Updated by Jonathan CLARKE almost 7 years ago

  • Assignee changed from Tomas Corej to Benoît PECCATTE
Actions #13

Updated by Jonathan CLARKE almost 7 years ago

  • Assignee changed from Benoît PECCATTE to Tomas Corej
Actions #14

Updated by Jonathan CLARKE almost 7 years ago

  • Status changed from Pending technical review to Pending release
  • % Done changed from 0 to 100

Applied in changeset commit:9d72df480ef60fc427020c6c19431bf6bd5a089a.

Actions #15

Updated by Benoît PECCATTE almost 7 years ago

Applied in changeset commit:3af7983c34081c6190c9a0a90c9dac17cd40ebfe.

Actions #16

Updated by Vincent MEMBRÉ about 6 years ago

  • Status changed from Pending release to Released
Actions #17

Updated by Alexis Mousset 4 months ago

  • Target version changed from 0.x to ncf-0.x
  • Priority set to 0
Actions #18

Updated by Alexis Mousset 4 months ago

  • Project changed from 41 to Rudder
  • Category set to Generic methods
Actions

Also available in: Atom PDF