Authentication-Results: mail-b.sr.ht; dkim=pass header.d=chabant.com header.i=@chabant.com; dkim=pass header.d=messagingengine.com header.i=@messagingengine.com Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by mail-b.sr.ht (Postfix) with ESMTPS id E70B511EF1D for <~sircmpwn/sr.ht-dev@lists.sr.ht>; Fri, 23 Apr 2021 04:50:20 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id A23AD5C017F; Fri, 23 Apr 2021 00:50:20 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Fri, 23 Apr 2021 00:50:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chabant.com; h= mime-version:content-type:content-transfer-encoding:subject :message-id:date:from:to:cc; s=fm1; bh=PI9FGp8rPEJ+iDBqOvMra6o95 76pUjwiC5r1nPlt/o4=; b=fd+kWbyhiHqArHMW0QSQa/IMfdumEB3H7BuGAR2sJ VZX7Iiicii2CwRZ5VQbCI+TQGWW4HPMUMgrFGTU8kz7zvIDAu0tVAw/nawiNp0Om c3lLFiKVzFC3rWbkvbbpd95wr9VD9yC9oyhAgSZbuZ8zo9jkrshwAjtbiYta2seP /+H01RzrsZip2FPuami4bn1KIEkoYkz5MzIPe4dBDnW5Kn1Dx/TCc026n1gF6YSi 2Aac7W8/peS3RIRBTSgJOZG3iK6r4GSJvtGEuvxHABGhCV+MpyWUNTrSLQw+pgo3 gKfWzs+IT5apT82EVmccB7F8D/d7V4sHlnjsJMl+I9YwQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=PI9FGp 8rPEJ+iDBqOvMra6o9576pUjwiC5r1nPlt/o4=; b=CcdPNQWjodUV73ugO/TTQ0 XLQ/NUwcg1OK0GOjXiKiEOwZjgg1KJ12rPo5o/cyXKaC9WdVy5S2+XTRzU1kyCja NL9uBe4dh36q8FeICS3rJ5FnbHqxMMV9ugTFtoCsj8Xok6NLfZUHwfzRpH7TNA0T ny8clZJwJOZ6ApuOBB4N0VfMkKJJXcx3bekQgHoDRaD0d++K4kra+gwunrutlJdg YT+pEC0mwMK0DOsPeOrnPh/z688SZul7ERNGwX6rDgy6ah7sMQExB7RE2zSAG/4F 8chG9Czjxtcy9QAbg1hdy7y5rH+MVV4hIr/3czO5vQu57vnpe8UkNdr2rjExaYgw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrvdduuddgkeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeggtgfguffkfgffhffvsehtjeertd dtredvnecuhfhrohhmpefnuhguohhvihgtucevhhgrsggrnhhtuceolhhuughovhhitges tghhrggsrghnthdrtghomheqnecuggftrfgrthhtvghrnhephfelgeehvefftdeihfeuvd dukeffgfejtdefuddtvdeljeetvddtveeviefgiefgnecukfhppeeghedrfeefrdefjedr udefleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hluhguohhvihgtsegthhgrsggrnhhtrdgtohhm X-ME-Proxy: Received: from [45.33.37.139] (li987-139.members.linode.com [45.33.37.139]) by mail.messagingengine.com (Postfix) with ESMTPA id 6159A240057; Fri, 23 Apr 2021 00:50:19 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: [PATCH hg.sr.ht] Report buildsrht submit errors to the client X-Mercurial-Node: dc3fb2d5a3e09c473968d203df92ecf75b2a08af X-Mercurial-Series-Index: 1 X-Mercurial-Series-Total: 1 Message-Id: X-Mercurial-Series-Id: User-Agent: Mercurial-patchbomb/5.1.2 Date: Fri, 23 Apr 2021 04:50:07 +0000 From: Ludovic Chabant To: ~sircmpwn/sr.ht-dev@lists.sr.ht Cc: Ludovic Chabant # HG changeset patch # User Ludovic Chabant # Date 1619151830 0 # Fri Apr 23 04:23:50 2021 +0000 # Node ID dc3fb2d5a3e09c473968d203df92ecf75b2a08af # Parent 985f1740a51a91f11bcb70245b1e8d292a54476e Report buildsrht submit errors to the client diff --git a/hgsrht-hook-changegroup b/hgsrht-hook-changegroup --- a/hgsrht-hook-changegroup +++ b/hgsrht-hook-changegroup @@ -20,8 +20,9 @@ if repo_id is None: raise Exception("Server Error: repo info missing ID") except Exception as ex: - std.stderr.write(str(ex)) - sys.stderr.exit(1) + sys.stderr.write(str(ex)) + sys.stderr.write("\n") + sys.exit(1) # If the repo was auto-created, print some warning. if repo.get("visibility") == "autocreated": @@ -41,10 +42,20 @@ headers.update(sign_payload(payload)) r = requests.post(f"{origin}/internal/hook-changegroup", data=payload, headers=headers) + +try: + response = r.json() +except: + sys.stderr.write("Server Error: invalid response from internal hook\n") + sys.exit(1) + if r.status_code == 200: - response = r.json() status = response.get('status') msgs = response.get('messages') if status != 'skipped' and msgs: for msg in msgs: print(msg) +else: + errormsg = response.get('why') or "unknown error" + sys.stderr.write(f"Server Error: {errormsg}\n") + sys.exit(1) diff --git a/hgsrht/blueprints/internal.py b/hgsrht/blueprints/internal.py --- a/hgsrht/blueprints/internal.py +++ b/hgsrht/blueprints/internal.py @@ -109,8 +109,13 @@ db.session.commit() # Trigger buildsrht builds. - res = trigger_changegroup_build(repo, node_last) - if res is not None: - return res.asdict(), 200 + try: + res = trigger_changegroup_build(repo, node_last) + if res is not None: + return res.asdict(), 200 - return {}, 200 + return {}, 200 + except Exception as ex: + return { + "why": str(ex) + }, 500