Skip to content

Commit 0aa8b4a

Browse files
samsticky-note
sam
authored and
sticky-note
committed
fix(sysrc-svc): workaround *BSD minion indefinitely hanging on start
Check saltstack/salt#44848 for further details
1 parent 29cd2d8 commit 0aa8b4a

File tree

6 files changed

+41
-15
lines changed

6 files changed

+41
-15
lines changed

pillar.example

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ postgres:
2424
# These pillars are typically never required.
2525
# pkg: 'postgresql'
2626
# pkg_client: 'postgresql-client'
27-
# service: postgresql
27+
# service:
28+
# name: 'postgresql'
29+
# flags: -w -s -m fast
30+
# sysrc: True
2831
pkgs_extra:
2932
- postgresql-contrib
3033
- postgresql-plpython

postgres/defaults.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ postgres:
6767

6868
config_backup: '.bak'
6969

70-
service: postgresql
70+
service:
71+
name: postgresql
72+
sysrc: False
7173

7274
bake_image: False
7375

postgres/osfamilymap.yaml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,17 @@ FreeBSD:
3030
prepare_cluster:
3131
user: *freebsd-user
3232
group: *freebsd-group
33+
service:
34+
flags: -w -s -m fast
35+
sysrc: True
3336

3437
OpenBSD:
3538
conf_dir: /var/postgresql/data
3639
data_dir: /var/postgresql/data
3740
user: _postgresql
41+
service:
42+
flags: -w -s -m fast
43+
sysrc: True
3844

3945
RedHat:
4046
pkg_repo:
@@ -54,7 +60,8 @@ RedHat:
5460
pkg_dev: postgresql{{ release }}-devel
5561
conf_dir: {{ data_dir }}
5662
data_dir: {{ data_dir }}
57-
service: postgresql-{{ repo.version }}
63+
service:
64+
name: postgresql-{{ repo.version }}
5865

5966
# Alternatives system
6067
linux:
@@ -132,7 +139,8 @@ Suse:
132139
pkg_libs: postgresql{{ release }}-libs
133140
conf_dir: {{ data_dir }}
134141
data_dir: {{ data_dir }}
135-
service: postgresql-{{ repo.version }}
142+
service:
143+
name: postgresql-{{ repo.version }}
136144

137145
# Alternatives system
138146
linux:
@@ -175,9 +183,11 @@ Suse:
175183
## jinja check avoids rendering noise/failure on Linux
176184
MacOS:
177185
{%- if repo.use_upstream_repo == 'homebrew' %}
178-
service: homebrew.mxcl.postgresql
186+
service:
187+
name: homebrew.mxcl.postgresql
179188
{%- elif repo.use_upstream_repo == 'postgresapp' %}
180-
service: com.postgresapp.Postgres2
189+
service:
190+
name: com.postgresapp.Postgres2
181191
{%- endif %}
182192
pkg: postgresql
183193
pkg_client:

postgres/server/image.sls

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ postgresql-start:
2424
postgresql-enable:
2525
cmd.run:
2626
{%- if salt['file.file_exists']('/bin/systemctl') %}
27-
- name: systemctl enable {{ postgres.service }}
27+
- name: systemctl enable {{ postgres.service.name }}
2828
{%- elif salt['cmd.which']('chkconfig') %}
29-
- name: chkconfig {{ postgres.service }} on
29+
- name: chkconfig {{ postgres.service.name }} on
3030
{%- elif salt['file.file_exists']('/usr/sbin/update-rc.d') %}
31-
- name: update-rc.d {{ service }} defaults
31+
- name: update-rc.d {{ postgres.service.name }} defaults
3232
{%- else %}
3333
# Nothing to do
3434
- name: 'true'

postgres/server/init.sls

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ postgresql-server:
3131
- require_in:
3232
- file: postgresql-server
3333
file.managed:
34-
- name: /Library/LaunchAgents/{{ postgres.service }}.plist
35-
- source: /usr/local/opt/postgres/{{ postgres.service }}.plist
34+
- name: /Library/LaunchAgents/{{ postgres.service.name }}.plist
35+
- source: /usr/local/opt/postgres/{{ postgres.service.name }}.plist
3636
- group: wheel
3737
- require_in:
3838
- service: postgresql-running
@@ -261,12 +261,23 @@ postgresql-tablespace-dir-{{ name }}-fcontext:
261261
262262
{%- if not postgres.bake_image %}
263263
264+
# Workaround for FreeBSD minion undefinitely hanging on service start
265+
# cf. https://github.com/saltstack/salt/issues/44848
266+
{% if postgres.service.sysrc %}
267+
posgresql-rc-flags:
268+
sysrc.managed:
269+
- name: {{ postgres.service.name }}_flags
270+
- value: "{{ postgres.service.flags }} > /dev/null 2>&1"
271+
- watch_in:
272+
- service: postgresql-running
273+
{% endif %}
274+
264275
# Start PostgreSQL server using OS init
265276
# Note: This is also the target for numerous `watch_in` requisites above, used
266277
# for the necessary service restart after changing the relevant configuration files
267278
postgresql-running:
268279
service.running:
269-
- name: {{ postgres.service }}
280+
- name: {{ postgres.service.name }}
270281
- enable: True
271282
272283
# Reload the service for changes made to `pg_ident.conf`, except for `MacOS`
@@ -275,7 +286,7 @@ postgresql-running:
275286
postgresql-service-reload:
276287
module.wait:
277288
- name: service.reload
278-
- m_name: {{ postgres.service }}
289+
- m_name: {{ postgres.service.name }}
279290
- require:
280291
- service: postgresql-running
281292
{%- endif %}

postgres/server/remove.sls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
postgresql-dead:
44
service.dead:
5-
- name: {{ postgres.service }}
5+
- name: {{ postgres.service.name }}
66
- enable: False
77
88
postgresql-repo-removed:
@@ -81,7 +81,7 @@ postgresql{{ release }}-tablespace-dir-{{ name }}-removed:
8181
file.absent:
8282
- name: {{ tblspace.directory }}
8383
- require:
84-
- file: postgresql{{ release }}-dataconf-removed
84+
- file: postgresql{{ release }}-dataconf-removed
8585
{% endfor %}
8686
{% endif %}
8787

0 commit comments

Comments
 (0)