From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id AF0561FF191 for ; Tue, 23 Sep 2025 17:19:03 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E3F3B1248F; Tue, 23 Sep 2025 17:19:33 +0200 (CEST) From: "Max R. Carrara" To: pmg-devel@lists.proxmox.com Date: Tue, 23 Sep 2025 17:19:24 +0200 Message-ID: <20250923151929.415784-1-m.carrara@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758640757099 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.087 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pmg-devel] [PATCH pmg-api master v1] systemd: fix report services failing if triggered to early by timers X-BeenThere: pmg-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pmg-devel-bounces@lists.proxmox.com Sender: "pmg-devel" Currently, the `pmgreport.service` and `pmgspamreport.service` units might fail if their corresponding timers activate them too early. To elaborate, both timers have `Persistent=true` in addition to their `OnCalendar` option. `Persistent=true` means that the timer's service unit will be triggered immediately when the timer is activated, but only if it would have been triggered while the timer was inactive [0]. Since the timers are activated relatively early, they might trigger their service units before postfix.service and postgresql.service have come up, causing `pmgreport.service`, or `pmgspamreport.service`, or both of them to fail. Fix this by letting both service units wait until postfix and postgres are up, which are necessary for the units to run successfully. Do this by adding the `After` and `Wants` options for `postfix.service` and `postgresql.service` to both service units. Additional context: While this is somewhat hard to encounter / debug under normal circumstances, it is possible to make this race condition much more apparent by adding an arbitrarily long delay to `postgresql.service` and `postfix.service` by adding an override for each: # systemctl edit postgresql.service Then add the following: [Service] ExecStartPre=-sleep 15 Do the same for `postfix.service`. Afterwards, change both timers to activate a few seconds after every boot by adding an override for each: # systemctl edit pmgreport.timer Then add the following: [Timer] OnCalendar= OnBootSec=5 Do the same for `pmgspamreport.timer`. A reboot should now suffice to make the issue reproducible. Conversely, the issue should not appear if this commit is applied. (Also, don't forget to remove the overrides again after debugging.) [0]: `man 5 systemd.timer` Signed-off-by: Max R. Carrara --- debian/pmgreport.service | 4 ++++ debian/pmgspamreport.service | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/debian/pmgreport.service b/debian/pmgreport.service index 6b05213..89e25c7 100644 --- a/debian/pmgreport.service +++ b/debian/pmgreport.service @@ -1,6 +1,10 @@ [Unit] Description=Send Daily System Report Mail ConditionPathExists=/usr/bin/pmgreport +After=postfix.service +After=postgresql.service +Wants=postfix.service +Wants=postgresql.service [Service] Type=oneshot diff --git a/debian/pmgspamreport.service b/debian/pmgspamreport.service index a20214f..2b4f163 100644 --- a/debian/pmgspamreport.service +++ b/debian/pmgspamreport.service @@ -1,6 +1,10 @@ [Unit] Description=Send Daily Spam Report Mails ConditionPathExists=/usr/bin/pmgqm +After=postfix.service +After=postgresql.service +Wants=postfix.service +Wants=postgresql.service [Service] Type=oneshot -- 2.47.3 _______________________________________________ pmg-devel mailing list pmg-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel