From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id A0B331FF176
	for <inbox@lore.proxmox.com>; Fri, 24 Jan 2025 09:53:39 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 4E6B71A74C;
	Fri, 24 Jan 2025 09:53:34 +0100 (CET)
Date: Fri, 24 Jan 2025 09:53:27 +0100
From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
References: <20250107143550.3266387-1-d.csapak@proxmox.com>
In-Reply-To: <20250107143550.3266387-1-d.csapak@proxmox.com>
MIME-Version: 1.0
User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid)
Message-Id: <1737708798.bqzzmpilrs.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.051 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
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 T_SCC_BODY_TEXT_LINE    -0.01 -
Subject: [pve-devel] applied: [PATCH http-server] fix generating 'extjs'
 response with exceptions/blessed errors
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

On January 7, 2025 3:35 pm, Dominik Csapak wrote:
> when an api call with the 'extjs' formatter fails, the intention is that
> the api call succeeds but contains the error in the inner structure
> ('error'/'status' property). When the api call fails with a raised
> exception (e.g. PVE::APIClient::Exception), the '$res->{message}' field
> is an object instead of a string.
> 
> Currently we directly assign the message to the resulting struct, which
> we then try to convert to json. Since the message was an object,
> `to_json` fails with 'encountered object` and the whole api call returns
> a 501 error (since `handle_api2_request` returns that by default if
> anything dies there, which is IMHO not correct but a different issue.)
> 
> By 'stringifying' the message, we avoid the error in `to_json` and the
> api call can succeed.
> 
> partially fixes #6051: It improves the error message in PDM when trying
> to remote migrate and the source cannot correctly resolve the target
> remote. (We use PVE::APIClient there to query the remote).
> 
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
> We could of course improve the situation in other ways (too):
> * handle errors of formatters better
> * passing through exceptions in AnyEvent (seems weird a bit)
> * passing thgough the error of the 501 in the PDM ui
>   (this contains the underlying error too by accident, since `to_json`
>   writes it out)
> 
> but i opted for this for now, since this is wrong either way (as in, it cannot
> work as intended when we don't stringify the message) and improves the
> error message on PDM side (still not optimal, but at least contains the
> root cause of the error now).
> 
>  src/PVE/APIServer/Formatter/Standard.pm | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/PVE/APIServer/Formatter/Standard.pm b/src/PVE/APIServer/Formatter/Standard.pm
> index c4def16..5211473 100644
> --- a/src/PVE/APIServer/Formatter/Standard.pm
> +++ b/src/PVE/APIServer/Formatter/Standard.pm
> @@ -27,7 +27,7 @@ sub prepare_response_data {
>  	# HACK: extjs wants 'success' property instead of useful HTTP status codes
>  	if (HTTP::Status::is_error($res->{status})) {
>  	    $success = 0;
> -	    $new->{message} = $res->{message} || status_message($res->{status});
> +	    $new->{message} = "$res->{message}" || status_message($res->{status});
>  	    $new->{status} = $res->{status} || 200;
>  	    $res->{message} = undef;
>  	    $res->{status} = 200;
> -- 
> 2.39.5
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel