Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(apache.service.running): prevent recursive requisite #388

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

alxwr
Copy link
Member

@alxwr alxwr commented Mar 21, 2024

PR progress checklist (to be filled in by reviewers)

  • Changes to documentation are appropriate (or tick if not required)
  • Changes to tests are appropriate (or tick if not required)
  • Reviews completed

What type of PR is this?

Primary type

  • [build] Changes related to the build system
  • [chore] Changes to the build process or auxiliary tools and libraries such as documentation generation
  • [ci] Changes to the continuous integration configuration
  • [feat] A new feature
  • [fix] A bug fix
  • [perf] A code change that improves performance
  • [refactor] A code change that neither fixes a bug nor adds a feature
  • [revert] A change used to revert a previous commit
  • [style] Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.)

Secondary type

  • [docs] Documentation changes
  • [test] Adding missing or correcting existing tests

Does this PR introduce a BREAKING CHANGE?

No.

Related issues and/or pull requests

Describe the changes you're proposing

I made this error go away: :-)

% salt --state-output=changes --state-verbose=False 'host.test' state.apply apache.config.file test=True
host.test:
----------
          ID: apache-service-running
    Function: service.running
        Name: apache2
      Result: False
     Comment: Recursive requisite found
     Changes:
[...]
----------
          ID: apache-service-running-restart
    Function: module.wait
        Name: service.restart
      Result: False
     Comment: Recursive requisite found
     Changes:   
----------
          ID: apache-service-running-reload
    Function: module.wait
        Name: service.reload
      Result: False
     Comment: Recursive requisite found
     Changes:

Pillar / config required to test the proposed changes

Debug log showing how the proposed changes work

% salt --state-output=changes --state-verbose=False 'host.test' state.apply apache.config.file test=True
host.test:
----------
          ID: apache-service-running
    Function: service.running
        Name: apache2
      Result: None
     Comment: Service apache2 is set to start  The state would be retried every 10 seconds (with a splay of up to 10 seconds) a maximum of 2 times or until a result of True is returned
     Started: 21:51:08.152014
    Duration: 12.319 ms
     Changes:   
----------
          ID: apache-service-running
    Function: cmd.run
        Name: journalctl -xe -u apache2 || tail -20 /var/log/messages || true
      Result: None
     Comment: Command "journalctl -xe -u apache2 || tail -20 /var/log/messages || true" would have been executed
     Started: 21:51:08.164573
    Duration: 0.464 ms
     Changes:   
              ----------
              cmd:
                  journalctl -xe -u apache2 || tail -20 /var/log/messages || true
----------
          ID: apache-service-running
    Function: cmd.run
        Name: (service apache2 restart && service apache2 status) || true
      Result: None
     Comment: Command "(service apache2 restart && service apache2 status) || true" would have been executed
     Started: 21:51:08.165158
    Duration: 0.414 ms
     Changes:   
              ----------
              cmd:
                  (service apache2 restart && service apache2 status) || true
----------
          ID: apache-service-running
    Function: cmd.run
        Name: cat /etc/apache2/apache2.conf
      Result: None
     Comment: Command "cat /etc/apache2/apache2.conf" would have been executed
     Started: 21:51:08.165693
    Duration: 0.417 ms
     Changes:   
              ----------
              cmd:
                  cat /etc/apache2/apache2.conf

Summary for host.test
-------------
Succeeded: 20 (unchanged=4, changed=3)
Failed:     0
-------------
Total states run:     20
Total run time:  110.024 ms

Documentation checklist

  • Updated the README (e.g. Available states).
  • Updated pillar.example.

Testing checklist

  • Included in Kitchen (i.e. under state_top).
  • Covered by new/existing tests (e.g. InSpec, Serverspec, etc.).
  • Updated the relevant test pillar.

Additional context

@alxwr alxwr changed the title [fix(apache.service.running): prevent recursive requisite fix(apache.service.running): prevent recursive requisite Mar 21, 2024
@MartinZbozien
Copy link

Had this problem and these changes actually made it work properly.

@danny-smit
Copy link

Had the problem as well, this fixed it mostly. I only had to add the following change to remove the "Recursive requisite found" message for the configure modules:

diff --git a/formulas/apache/config/modules/install.sls b/formulas/apache/config/modules/install.sls
index 5bab8295..c7f4fecf 100644
--- a/formulas/apache/config/modules/install.sls
+++ b/formulas/apache/config/modules/install.sls
@@ -40,8 +40,6 @@ apache-config-modules-{{ module }}-enable:
 
         {%- endif %}
     - order: 225
-    - require:
-      - sls: {{ sls_config_file }}
     - watch_in:
       - module: apache-service-running-restart
     - require_in:

@danny-smit
Copy link

Small update to my previous comment.

The state in apache/config/modules/install.sls contains a hard order: 225, which would order it before all other states without an order key. This can give problems on new installed machines. Instead, the following change should fix both the "Recursive requisite" and the ordering issue:

diff --git a/apache/config/modules/install.sls b/apache/config/modules/install.sls
index 9cc5273..b85c80c 100644
--- a/apache/config/modules/install.sls
+++ b/apache/config/modules/install.sls
@@ -41,7 +41,7 @@ apache-config-modules-{{ module }}-enable:
         {%- endif %}
     - order: 225
     - require:
-      - sls: {{ sls_config_file }}
+      - file: apache-config-file-directory-moddir
     - watch_in:
       - module: apache-service-running-restart
     - require_in:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants