Project

General

Profile

action #80662

uninitialized value in string eq at .../load_templates line 137

Added by michel_mno 8 months ago. Updated 8 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Concrete Bugs
Target version:
Start date:
2020-12-02
Due date:
% Done:

0%

Estimated time:
Difficulty:

Description

In a local openQA instance, still managed with templates.json
I inadvertently saved as YAML the PowerPC job group via openQA UI.

On subsequent use of load_templates there was an unexpected "uninitialized value in string" error.

$/usr/share/openqa/script/load_templates --clean /tmp/mytemplate.json
...
Use of uninitialized value in string eq at /usr/share/openqa/script/load_templates line 137.
Bad Request: Group Fedora PowerPC must be updated through the YAML template at /usr/share/openqa/script/load_templates line 139.

1- I do not understand what is wrong with "reftype $json_err eq 'ARRAY';"
https://github.com/os-autoinst/openQA/blob/master/script/load_templates#L137
2- Is there a way to clean my openQA local instance to remove the yaml saved data to be able to continue to use json templates ?

History

#1 Updated by michel_mno 8 months ago

proposed patch:

$diff -u /usr/share/openqa/script/load_templates.ref20201201 /usr/share/openqa/script/load_templates
--- /usr/share/openqa/script/load_templates.ref20201201 2020-08-07 22:54:00.000000000 +0200
+++ /usr/share/openqa/script/load_templates     2020-12-02 15:33:23.743520132 +0100
@@ -135,7 +135,7 @@
         if (my $json = $res->json) {
             if (my $json_err = $json->{error}) {
                 die "$err->{message}: " . join("\n", @{$json_err})
-                  if reftype $json_err eq 'ARRAY';
+                  if reftype $json_err // '' eq 'ARRAY';
                 die "$err->{message}: $json_err";
             }
         }

#2 Updated by cdywan 8 months ago

What did you use for /tmp/mytemplate.json?

I wonder how $json_err could even be undefined here, within the if. But the unit test for load_templates is pretty basic so it probbly doesn't cover this case.

#3 Updated by mkittler 8 months ago

But reftype $json_err might be undef. I would suggest to simply use ref here instead. It will return an empty string if $json_err is not a reference.

It would look like this: https://github.com/os-autoinst/openQA/pull/3615

#4 Updated by okurz 8 months ago

  • Category set to Concrete Bugs
  • Status changed from New to Feedback
  • Assignee set to mkittler
  • Target version set to Ready

https://github.com/os-autoinst/openQA/pull/3615 looks good and should as an alternative cover what was proposed in #80662#note-1 . It's merged. The next openSUSE package from devel:openQA should have that fix included.

michel_mno please let us know if the above code change fixes the problem for you or if this just leads us to any underlying further problem.

#5 Updated by michel_mno 8 months ago

  • Status changed from Feedback to Resolved

okurz wrote:

https://github.com/os-autoinst/openQA/pull/3615 looks good and should as an alternative cover what was proposed in #80662#note-1 . It's merged. The next openSUSE package from devel:openQA should have that fix included.

michel_mno please let us know if the above code change fixes the problem for you or if this just leads us to any underlying further problem.

I confirm pr#3615 code change is fixing my problem.

$/usr/share/openqa/script/load_templates --clean /tmp/templates.json >/tmp/x2
Bad Request: Group Fedora PowerPC must be updated through the YAML template at /usr/share/openqa/script/load_templates line 138.

so change status to resolved.

Also available in: Atom PDF