Skip to content

Commit ca0854b

Browse files
committed
fix postgresql setup and service timing
1 parent d8ad540 commit ca0854b

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

modules/arr-common/hostConfigService.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ serviceName: serviceConfig:
77
with lib; {
88
description = "Configure ${serviceName} via API";
99
after = ["${serviceName}.service"];
10+
requires = ["${serviceName}.service"];
1011
wantedBy = ["multi-user.target"];
1112

1213
serviceConfig = {

modules/arr-common/mkArrServiceModule.nix

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,39 @@ in {
173173

174174
systemd.services =
175175
{
176+
# Service that waits for PostgreSQL and this service's database to be ready
177+
"${serviceName}-wait-for-db" = mkIf config.services.postgresql.enable {
178+
description = "Wait for ${capitalizedName} PostgreSQL database to be ready";
179+
after = ["postgresql.service" "postgresql-setup.service"];
180+
requires = ["postgresql.service" "postgresql-setup.service"];
181+
wantedBy = ["multi-user.target"];
182+
183+
serviceConfig = {
184+
Type = "oneshot";
185+
RemainAfterExit = true;
186+
Restart = "on-failure";
187+
RestartSec = "2s";
188+
StartLimitBurst = 15;
189+
StartLimitIntervalSec = "60s";
190+
};
191+
192+
script = ''
193+
# Try to connect as the service user and run a simple query
194+
${pkgs.postgresql}/bin/psql -U ${cfg.user} -h /run/postgresql -d ${cfg.user} -c "SELECT 1;" > /dev/null
195+
echo "${capitalizedName} PostgreSQL database is ready"
196+
'';
197+
};
198+
176199
# Ensure main service (radarr.service, etc.) starts after
177200
# directories are created and configured dependencies
178201
${serviceName} = {
179202
after =
180203
["nixflix-setup-dirs.service"]
181-
++ (optional config.services.postgresql.enable "postgresql-setup.service")
204+
++ (optional config.services.postgresql.enable "${serviceName}-wait-for-db.service")
182205
++ (optional config.nixflix.mullvad.enable "mullvad-config.service");
183206
requires =
184207
["nixflix-setup-dirs.service"]
185-
++ (optional config.services.postgresql.enable "postgresql-setup.service");
208+
++ (optional config.services.postgresql.enable "${serviceName}-wait-for-db.service");
186209
wants = optional config.nixflix.mullvad.enable "mullvad-config.service";
187210
};
188211
}

tests/vm-tests/postgresql-integration.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ pkgs.testers.runNixOSTest {
8181
# Wait for PostgreSQL
8282
machine.wait_for_unit("postgresql.service", timeout=60)
8383
machine.wait_for_open_port(5432, timeout=60)
84+
machine.wait_for_unit("postgresql-setup.service", timeout=60)
8485
8586
# Wait for all services
8687
machine.wait_for_unit("prowlarr.service", timeout=60)

0 commit comments

Comments
 (0)