fix(dev-new): re-run wow-config on every server start #389

Merged
dominik.polakovics merged 2 commits from fix/wow-config-self-heal into main 2026-08-26 19:16:31 +02:00

⚠️ Merge #384 first

This PR makes wow-config run on every server start. Warden.Enabled = 0 currently exists only as a hand-edit on the live host — #384 is the commit that puts it in the repo and has been open since 2026-08-22.

Merge this one first and the next 05:00 restart re-installs worldserver.conf from the store, re-enabling Warden and breaking the FEX-translated Android client again (ERROR #132).

What was wrong

hosts/dev-new had zero auctions. The auction house bot was enabled, loaded, and pointed at a valid seller — it just posted nothing.

/var/lib/wow/etc/modules/mod_ahbot.conf on the host was the 1004-byte partial config from before #376, while the deployed system generation has wanted the 72864-byte full upstream file since generation 200 (2026-08-22):

gen 200  ahbot=b84g86cp32hk3p09bfpf3h6l19jvnlnb-mod_ahbot.conf  bytes=72864
gen 201  ahbot=b84g86cp32hk3p09bfpf3h6l19jvnlnb-mod_ahbot.conf  bytes=72864
...                                     on disk:  1004 bytes, mtime 2026-08-21 01:05

individualProgression.conf was stale the same way — 1302 bytes on disk against 25153 in the store.

The partial file does set GUIDs = 701, EnableSeller = true and Buyer.Enabled = true, which is why this looked configured. Everything else fell back to compiled defaults, and the startup log said so ~440 times:

Config: Missing property AuctionHouseBot.ItemsPerCycle ... add "AuctionHouseBot.ItemsPerCycle = 75"
Config: Missing property AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled ...

Why it stayed broken for five days

wow-config was Type=oneshot + RemainAfterExit=true. It last ran at 2026-08-21 01:05:37 and never again — the journal has no entry after that. Once latched active it only re-runs if a switch restarts it, and nothing ever did, so the files it installs were frozen at whatever the 01:05 generation held. No unit failed; systemctl status wow-config read active (exited) the whole time.

Dropping RemainAfterExit means both podman-wow-worldserver and podman-wow-authserver — which already Requires= and After= it — pull it in on every start. The daily 05:00 restart now re-installs the configs, so stale state cannot outlive a day. install is idempotent and playerbots.conf is still seed-once, so nothing else changes.

Verification

Applied on the host ahead of this PR:

before:  mod_ahbot.conf  1004 bytes   individualProgression.conf   1302 bytes
after:   mod_ahbot.conf 72864 bytes   individualProgression.conf  25153 bytes
Missing property AuctionHouseBot.* warnings after reload: 0

Auctions, ~5 minutes apart:

houseid   n          total
2       300          450  →  2700
6       300
7       300

All three houses fill, confirming the single Alliance seller feeds Alliance, Horde and neutral alike.

Checked before applying, since wow-config also rewrites individualProgression.conf and a wrong value there re-promotes characters on login: the full file keeps StartingProgression = 0, ProgressionLimit = 0, the vanilla/TBC power and healing adjustments, and BotAccountsRegex = "^RNDBOT.*" — same values the partial had, plus the ~55 upstream settings it was missing.

Dry-build: :: dev-new OK.

Note

systemctl restart wow-config cascades a restart to both servers through Requires=, so it cycles the realm — it is not a quiet operation. That is how Warden got re-enabled on the live host today, and the reason for the ordering warning at the top.

## ⚠️ Merge #384 first This PR makes `wow-config` run on **every** server start. `Warden.Enabled = 0` currently exists only as a hand-edit on the live host — #384 is the commit that puts it in the repo and has been open since 2026-08-22. Merge this one first and the next 05:00 restart re-installs `worldserver.conf` from the store, re-enabling Warden and breaking the FEX-translated Android client again (ERROR #132). ## What was wrong `hosts/dev-new` had zero auctions. The auction house bot was enabled, loaded, and pointed at a valid seller — it just posted nothing. `/var/lib/wow/etc/modules/mod_ahbot.conf` on the host was the **1004-byte partial** config from before #376, while the deployed system generation has wanted the **72864-byte** full upstream file since generation 200 (2026-08-22): ``` gen 200 ahbot=b84g86cp32hk3p09bfpf3h6l19jvnlnb-mod_ahbot.conf bytes=72864 gen 201 ahbot=b84g86cp32hk3p09bfpf3h6l19jvnlnb-mod_ahbot.conf bytes=72864 ... on disk: 1004 bytes, mtime 2026-08-21 01:05 ``` `individualProgression.conf` was stale the same way — 1302 bytes on disk against 25153 in the store. The partial file does set `GUIDs = 701`, `EnableSeller = true` and `Buyer.Enabled = true`, which is why this looked configured. Everything else fell back to compiled defaults, and the startup log said so ~440 times: ``` Config: Missing property AuctionHouseBot.ItemsPerCycle ... add "AuctionHouseBot.ItemsPerCycle = 75" Config: Missing property AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled ... ``` ## Why it stayed broken for five days `wow-config` was `Type=oneshot` + `RemainAfterExit=true`. It last ran at **2026-08-21 01:05:37** and never again — the journal has no entry after that. Once latched active it only re-runs if a switch restarts it, and nothing ever did, so the files it installs were frozen at whatever the 01:05 generation held. No unit failed; `systemctl status wow-config` read `active (exited)` the whole time. Dropping `RemainAfterExit` means both `podman-wow-worldserver` and `podman-wow-authserver` — which already `Requires=` and `After=` it — pull it in on every start. The daily 05:00 restart now re-installs the configs, so stale state cannot outlive a day. `install` is idempotent and `playerbots.conf` is still seed-once, so nothing else changes. ## Verification Applied on the host ahead of this PR: ``` before: mod_ahbot.conf 1004 bytes individualProgression.conf 1302 bytes after: mod_ahbot.conf 72864 bytes individualProgression.conf 25153 bytes Missing property AuctionHouseBot.* warnings after reload: 0 ``` Auctions, ~5 minutes apart: ``` houseid n total 2 300 450 → 2700 6 300 7 300 ``` All three houses fill, confirming the single Alliance seller feeds Alliance, Horde and neutral alike. Checked before applying, since `wow-config` also rewrites `individualProgression.conf` and a wrong value there re-promotes characters on login: the full file keeps `StartingProgression = 0`, `ProgressionLimit = 0`, the vanilla/TBC power and healing adjustments, and `BotAccountsRegex = "^RNDBOT.*"` — same values the partial had, plus the ~55 upstream settings it was missing. Dry-build: `:: dev-new OK`. ## Note `systemctl restart wow-config` cascades a restart to both servers through `Requires=`, so it cycles the realm — it is not a quiet operation. That is how Warden got re-enabled on the live host today, and the reason for the ordering warning at the top.
wow-config was Type=oneshot with RemainAfterExit, so once it had latched
active it only ever ran again when a switch decided to restart it. A switch
that never got that far left the files it installs untouched, with no
failure anywhere to notice.

That happened between 2026-08-21 and today: PR #376 replaced the partial
module configs with the full upstream files, the new store paths reached
generation 200, and /var/lib/wow/etc/modules kept the pre-fix 1004-byte
mod_ahbot.conf and 1302-byte individualProgression.conf the whole time. The
auction house bot ran on compiled defaults and posted nothing for five days;
the only symptom was "Config: Missing property AuctionHouseBot.*" in a
startup log nobody reads.

Dropping RemainAfterExit makes both servers pull the unit in on every start,
so the daily 05:00 restart re-installs the configs and stale state cannot
outlive a day.
dominik.polakovics deleted branch fix/wow-config-self-heal 2026-08-26 19:16:31 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/nixos!389
No description provided.