View Issue Details

IDProjectCategoryView StatusLast Update
0011545Talermerchant backendpublic2026-07-06 10:45
Reportervecirex Assigned ToChristian Grothoff  
PrioritynoneSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product Versiongit (master) 
Target Version1.6Fixed in Version1.6 
Summary0011545: taler-merchant.target gets removed upon reinstall/upgrade
DescriptionThis was observed already w/ running upgrade scripts, but can most easily be reproduced by just doing reinstall on the "taler-merchant" package:

### root@betel:~# apt-get reinstall taler-merchant
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 1,848 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 https://deb.taler.net/apt/debian trixie-testing/main amd64 taler-merchant amd64 1.6.5-0+trixie [1,848 kB]
Fetched 1,848 kB in 1s (2,176 kB/s)      
(Reading database ... 47039 files and directories currently installed.)
Preparing to unpack .../taler-merchant_1.6.5-0+trixie_amd64.deb ...
taler-merchant.target was enabled before upgrade.
Removed '/etc/systemd/system/multi-user.target.wants/taler-merchant.target'.
Unpacking taler-merchant (1.6.5-0+trixie) over (1.6.5-0+trixie) ...
Setting up taler-merchant (1.6.5-0+trixie) ...
Not enabling or starting Taler merchant services (marker not found or was 'disabled').
/var/lib/dpkg/info/taler-merchant.postinst: line 99: /usr/share/taler-merchant//spa/index.css: No such file or directory
/var/lib/dpkg/info/taler-merchant.postinst: line 100: /usr/share/taler-merchant//spa/index.css: No such file or directory
/var/lib/dpkg/info/taler-merchant.postinst: line 99: /usr/share/taler-merchant//spa/index.js: No such file or directory
/var/lib/dpkg/info/taler-merchant.postinst: line 100: /usr/share/taler-merchant//spa/index.js: No such file or directory
/var/lib/dpkg/info/taler-merchant.postinst: line 99: /usr/share/taler-merchant//spa/lang.js: No such file or directory
/var/lib/dpkg/info/taler-merchant.postinst: line 100: /usr/share/taler-merchant//spa/lang.js: No such file or directory
taler-merchant-dbinit-gc.service is a disabled or a static unit not running, not starting it.
taler-merchant-dbinit-gc.timer is a disabled or a static unit not running, not starting it.
taler-merchant-depositcheck.service is a disabled or a static unit not running, not starting it.
taler-merchant-donaukeyupdate.service is a disabled or a static unit not running, not starting it.
taler-merchant-exchangekeyupdate.service is a disabled or a static unit not running, not starting it.
taler-merchant-httpd.service is a disabled or a static unit not running, not starting it.
taler-merchant-httpd.socket is a disabled or a static unit not running, not starting it.
taler-merchant-kyccheck.service is a disabled or a static unit not running, not starting it.
taler-merchant-reconciliation.service is a disabled or a static unit not running, not starting it.
taler-merchant-report-generator.service is a disabled or a static unit not running, not starting it.
taler-merchant-webhook.service is a disabled or a static unit not running, not starting it.
taler-merchant-wirewatch.service is a disabled or a static unit not running, not starting it.
taler-merchant.target is a disabled or a static unit not running, not starting it.
Processing triggers for man-db (2.13.1-1) ...
Processing triggers for libc-bin (2.41-12+deb13u3) ...
[master b903ba9] committing changes in /etc made by "apt-get reinstall taler-merchant"
 1 file changed, 1 deletion(-)
 delete mode 120000 systemd/system/multi-user.target.wants/taler-merchant.target
Scanning processes...                                                           
Scanning linux images...                                                        

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
### root@betel:~# systemctl status taler-merchant.target
○ taler-merchant.target - GNU Taler merchant
     Loaded: loaded (/usr/lib/systemd/system/taler-merchant.target; disabled; p>
     Active: inactive (dead)

Jun 24 16:26:12 betel systemd[1]: Reached target taler-merchant.target - GNU Ta>
Jun 24 16:28:28 betel systemd[1]: Stopped target taler-merchant.target - GNU Ta>
### root@betel:~# 
Additional InformationObserved in prod on taler-merchant v1.6.0 as well as in stage (on taler-merchant v1.6.5).
TagsNo tags attached.

Relationships

related to 0011518 confirmedvecirex Test taler-merchant v1.6.9 to be production-ready 

Activities

vecirex

2026-06-24 16:37

manager   ~0028969

Workaround upon upgrade / reinstall / reboot:

### root@betel:~# systemctl enable taler-merchant.target
Created symlink '/etc/systemd/system/multi-user.target.wants/taler-merchant.target' → '/usr/lib/systemd/system/taler-merchant.target'.
### root@betel:~# systemctl status taler-merchant.target
○ taler-merchant.target - GNU Taler merchant
     Loaded: loaded (/usr/lib/systemd/system/taler-merchant.target; enabled; pr>
     Active: inactive (dead)

Jun 24 16:26:12 betel systemd[1]: Reached target taler-merchant.target - GNU Ta>
Jun 24 16:28:28 betel systemd[1]: Stopped target taler-merchant.target - GNU Ta>
### root@betel:~# systemctl start taler-merchant.target
### root@betel:~# systemctl status taler-merchant.target | grep active
     Active: active since Wed 2026-06-24 16:36:08 CEST; 4s ago
### root@betel:~# 

vecirex

2026-07-06 06:37

manager   ~0029080

Just seen while doing kernel upgrade on betel/stage, still persists in taler-merchant v1.6.9 released fours days ago:

### root@betel:~# uname -a
Linux betel 6.12.95+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.95-1 (2026-07-04) x86_64 GNU/Linux
### root@betel:~# systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION

0 loaded units listed.
### root@betel:~# ps -axw | grep taler-merchant
   1034 pts/0    S+     0:00 grep taler-merchant
### root@betel:~# taler-merchant-httpd --version
taler-merchant-httpd v1.6.9
### root@betel:~# systemctl status taler-merchant.target 
○ taler-merchant.target - GNU Taler merchant
     Loaded: loaded (/usr/lib/systemd/system/taler-merchant.target; disabled; p>
     Active: inactive (dead)
### root@betel:~# systemctl enable taler-merchant.target
Created symlink '/etc/systemd/system/multi-user.target.wants/taler-merchant.target' → '/usr/lib/systemd/system/taler-merchant.target'.
### root@betel:~# systemctl start taler-merchant.target 
### root@betel:~# systemctl status taler-merchant.target | grep active
     Active: active since Mon 2026-07-06 06:31:00 CEST; 7s ago
### root@betel:~# ps -axw | grep taler-merchant
   1198 ?        Ss     0:00 /usr/bin/taler-merchant-depositcheck -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1199 ?        Ss     0:00 /usr/bin/taler-merchant-donaukeyupdate -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1200 ?        Ss     0:03 /usr/bin/taler-merchant-exchangekeyupdate -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1201 ?        Ss     0:03 /usr/bin/taler-merchant-kyccheck -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1202 ?        Ss     0:01 /usr/bin/taler-merchant-reconciliation -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1203 ?        Ss     0:00 /usr/bin/taler-merchant-report-generator -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1204 ?        Ss     0:00 /usr/bin/taler-merchant-webhook -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1205 ?        Ss     0:00 /usr/bin/taler-merchant-wirewatch -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1206 ?        Ss     0:01 /usr/bin/taler-merchant-httpd -c /etc/taler-merchant/taler-merchant.conf -L INFO
   1207 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1208 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1209 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1210 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1211 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1212 ?        S      0:01 taler-merchant-depositcheck -c /etc/taler-merchant/taler-merchant.conf -e https://exchange.stage.taler-ops.ch/ -L INFO -T 0
   1213 ?        S      0:00 taler-merchant-depositcheck -c /etc/taler-merchant/taler-merchant.conf -e https://exchange.taler-ops.ch/ -L INFO -T 0
   1214 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1215 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1216 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1217 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1218 ?        Ss     0:00 postgres: 17/main: taler-merchant-httpd taler-merchant [local] idle
   1258 pts/0    S+     0:00 grep taler-merchant
### root@betel:~# 

Christian Grothoff

2026-07-06 10:22

manager   ~0029083

Eh:

debian/taler-merchant.prerm writes the marker to /run/taler-merchant/.was-enabled
debian/taler-merchant.postinst reads the marker from /var/lib/taler-merchant/.was-enabled

That won't work... We changed it from /run to /var/lib earlier, seems one path was skipped.

Note that the fix will only work for the next re-install: first the package needs to be upgraded, and then the upgrade after that should work properly.

vecirex

2026-07-06 10:45

manager   ~0029087

OK, will test: ty!

Issue History

Date Modified Username Field Change
2026-06-24 16:35 vecirex New Issue
2026-06-24 16:35 vecirex Status new => assigned
2026-06-24 16:35 vecirex Assigned To => Florian Dold
2026-06-24 16:37 vecirex Note Added: 0028969
2026-06-24 16:38 vecirex Relationship added related to 0011518
2026-07-06 06:37 vecirex Note Added: 0029080
2026-07-06 10:22 Christian Grothoff Note Added: 0029083
2026-07-06 10:24 Christian Grothoff Assigned To Florian Dold => Christian Grothoff
2026-07-06 10:24 Christian Grothoff Status assigned => resolved
2026-07-06 10:24 Christian Grothoff Resolution open => fixed
2026-07-06 10:24 Christian Grothoff Fixed in Version => 1.6
2026-07-06 10:24 Christian Grothoff Product Version => git (master)
2026-07-06 10:24 Christian Grothoff Target Version => 1.6
2026-07-06 10:45 vecirex Note Added: 0029087