so that API paths that raise an exception while holding a CFS lock
properly propagate that exception to the client, instead of the
stringified version with added noise about locks added to the front.

Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
---

Notes:
    there seems to be nothing that matches on the prefix added by cfs_lock.
    
    some API calls in pve-access-control, pve-storage and Replication would now
    benefit from raising (parameter) exceptions instead of a plain death while
    having a config file locked (mainly checking for duplicates when adding 
entries)

 data/PVE/Cluster.pm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
index b4de989..cce681b 100644
--- a/data/PVE/Cluster.pm
+++ b/data/PVE/Cluster.pm
@@ -609,7 +609,13 @@ my $cfs_lock = sub {
     alarm($prev_alarm);
 
     if ($err) {
-        $@ = "error with cfs lock '$lockid': $err";
+       if (ref($err) eq 'PVE::Exception') {
+           # re-raise defined exceptions
+           $@ = $err;
+       } else {
+           # add lock info for plain errors 
+           $@ = "error with cfs lock '$lockid': $err";
+       }
         return undef;
     }
 
-- 
2.20.1


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

Reply via email to