On 2/21/22 16:44, Thomas Lamprecht wrote:
On 18.02.22 12:38, Aaron Lauterer wrote:
This patch requires patch 3 of the series to not break OSD removal!
Therefore releasing a new version of librados2-perl and pve-manager
needs to be coordinated.
I don't like that and think it can be avoided.
I'll look into it again.
[...]
sub mon_command {
- my ($self, $cmd) = @_;
+ my ($self, $cmd, $noerr) = @_;
+
+ $noerr = 0 if !$noerr;
$cmd->{format} = 'json' if !$cmd->{format};
my $json = encode_json($cmd);
- my $raw = eval { $sendcmd->($self, 'M', $json) };
+ my $ret = eval { $sendcmd->($self, 'M', $json, undef, $noerr) };
I'd rather like to avoid chaining through that $noerr every where, rather pass
all the
info via the die (errors can be references to structured data too, like
PVE::Exception is),
or just avoid the die at the lower level completely and map the error inside
the struct
too, it can then be thrown here, depending on $noerr parameters or what not.
Okay, definitely sounds like the cleaner approach.
[...]
- if (ret < 0) {
+ if (ret < 0 && noerr == false) {
char msg[4096];
if (outslen > sizeof(msg)) {
outslen = sizeof(msg);
@@ -142,9 +143,22 @@ CODE:
die(msg);
}
- RETVAL = newSVpv(outbuf, outbuflen);
+ char status[(int)outslen + 1];
this is on the stack and could be to large to guarantee it always fits, but...
+ if (outslen > sizeof(status)) {
+ outslen = sizeof(status);
+ }
+ snprintf(status, sizeof(status), "%.*s\n", (int)outslen, outs);
...why not just chain outs through instead of re-allocating it and writing it
out in a
relatively expensive way?
Yeah, will do that.
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel