Received: from mail.netlandish.com (mail.netlandish.com [174.136.98.166]) by code.netlandish.com (Postfix) with ESMTP id 19DC1A4 for <~netlandish/links-dev@lists.code.netlandish.com>; Tue, 25 Mar 2025 23:29:17 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.221.179; helo=mail-vk1-f179.google.com; envelope-from=peter@netlandish.com; receiver= Authentication-Results: mail.netlandish.com; dkim=pass (1024-bit key; unprotected) header.d=netlandish.com header.i=@netlandish.com header.b=XJIsht1r Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) by mail.netlandish.com (Postfix) with ESMTP id A13641D6430 for <~netlandish/links-dev@lists.code.netlandish.com>; Tue, 25 Mar 2025 23:29:16 +0000 (UTC) Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-5242f137a1eso2744418e0c.1 for <~netlandish/links-dev@lists.code.netlandish.com>; Tue, 25 Mar 2025 16:29:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netlandish.com; s=google; t=1742945356; x=1743550156; darn=lists.code.netlandish.com; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=fb44b3+eAYq/L0mDAte3vrwDqzQUCwFTNdwnb2nG9rc=; b=XJIsht1rynCv2CQ5bcJz60/YHQJOKr+7oWauOd2PpsRE7Jh0CDuMoML+binHkqqz/q QJA+8IfgL/O2c1St7BAhuabzFN7uNm5g7FGRbqVKQ8cJkngA9EAhDiTZfkTl5ZARoan0 GTsGhJePWWq+DdW/t4tzWdJGwSfIRj+KanGMc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742945356; x=1743550156; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fb44b3+eAYq/L0mDAte3vrwDqzQUCwFTNdwnb2nG9rc=; b=AyBQI305NI0hTGHO5xiVaHqLa2JD8t2t+IcDwoJGvjOQvzb7fsJ84OpJNhQ18PWYGN i0H3PWjz38/a28k0Km5IzcqZ513sVOp8TKM0wSnguY5qv+7zS3GPqJPDrwCrW2u4AP++ wsZMB9azShxCRK0b3M0qxi+YYTNN5GRKtdR5gx3NBwhY8i/Nw8ohLYKYGZqXA7Ucekia 0EwZLPzaT1uBA82YedCjri3T0grCBsWJ5Oo9C4oT+CjF/O38ojigRX5XKPR5tAT85h7Y OhhPBHg2lVwkB71uIGXpNAZtq9td/MGp2zlmp8TnxZL4Yg9RDaAnl/6KYyila3beeqNC 4JMg== X-Gm-Message-State: AOJu0YxfK7G8T7cQd18YYBWPlh9qNIl7ON0arshEl/bWHY0UHnvj25BH wV2xE3uZ488cyun+LnG8dRhDftxCXjqTrJ9PjT8JMr6KfmNp/EZqU4bPSLBoCt3SJhEuRZBOYXG VFkg= X-Gm-Gg: ASbGncvaDYWLL+ZJSqhLkwhwXt0SY048DudzZdaeGsGaQNTFfgSsPnqaujWK6N9unUx DVeY2kg25x0nDa9n4D2Wr0soGjdskRgZVRmF/VnhWkejvVjNNIJNTbJfHjyAAL0lvqnHmrRRLBU Li5RsGUDUneRXmJPad7o/41U5ZFhH1sysry49qM7wkuLmWA7vGmNAppvETQ0OJbpkWYsYAJCRol mdd3HDgkK3mKJP2xXnLZd5Ypl5QrKctx2Llh2YBKHGS7VFXeibSBBDWc+9bYG21JEVmdCxD0WI0 WNuIzRYM/Sr4jYAMN2kHZIGBsGquCxVTMHYa4mqpNzIuyg== X-Google-Smtp-Source: AGHT+IFpIe1fEkZPHxMX2jHz0q7PfdpucS0NpkFMPAa6dkJqgLHsT+d7VJm1OCq1vodwWj1eCGafCQ== X-Received: by 2002:a05:6122:400f:b0:520:6773:e5c5 with SMTP id 71dfb90a1353d-525a851775bmr14583401e0c.7.1742945355562; Tue, 25 Mar 2025 16:29:15 -0700 (PDT) Received: from localhost ([2803:2d60:1118:5ee:1761:4011:17bd:49c4]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-525a738d2c6sm1980716e0c.11.2025.03.25.16.29.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Mar 2025 16:29:14 -0700 (PDT) From: Peter Sanchez To: ~netlandish/links-dev@lists.code.netlandish.com Cc: Peter Sanchez Subject: [PATCH links] Avoiding potential issue when not letting parseBaseURLs terminate normally. We make sure we wait for that to finish before shutting down the `links` service. Date: Tue, 25 Mar 2025 17:29:02 -0600 Message-ID: <20250325232912.19853-1-peter@netlandish.com> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Changelog-added: Be sure we are shutting down background tasks correctly to avoid any data errors, etc. Signed-off-by: Peter Sanchez --- cmd/links/main.go | 6 +++++- cmd/links/parse.go | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cmd/links/main.go b/cmd/links/main.go index 4372a40..732886e 100644 --- a/cmd/links/main.go +++ b/cmd/links/main.go @@ -8,6 +8,7 @@ import ( "os" "slices" "strings" + "sync" "text/template" "time" @@ -385,8 +386,11 @@ func run() error { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - go parseBaseURLs(ctx, srv) + wg := new(sync.WaitGroup) + wg.Add(1) + go parseBaseURLs(ctx, srv, wg.Done) srv.Run() + wg.Wait() return nil } diff --git a/cmd/links/parse.go b/cmd/links/parse.go index 0cbe8a4..600d8eb 100644 --- a/cmd/links/parse.go +++ b/cmd/links/parse.go @@ -60,7 +60,8 @@ func runParse(ctx context.Context, srv *server.Server) error { // This is a helper function to process base URL's that had errors // when fetching them. -func parseBaseURLs(ctx context.Context, srv *server.Server) { +func parseBaseURLs(ctx context.Context, srv *server.Server, done func()) { + defer done() nctx, cancel := context.WithCancel(context.Background()) nctx = server.ServerContext(nctx, srv) nctx = database.Context(nctx, srv.DB) -- 2.47.2