Project

General

Profile

action #121444

Updated by mkittler 6 months ago

## Observation
We saw the following error on o3 today:
```
[2022-12-05T10:45:55.571462Z] [error] [JBm0Hyi1i4oq] Can't open file
"/var/lib/openqa/testresults/01371/01371619-opensuse-Jump:15.2-DVD-ppc64le-Build39.13-extra_tests_in_textmode@ppc64le/
details-gd.json": No such file or directory at /usr/share/openqa/script/../lib/OpenQA/Schema/Result/JobModules.pm line
95.
```

It seems like the test got deleted because we have this in the access log:
```
[05/Dec/2022:10:45:50 +0000] "GET /tests/1371619 HTTP/1.1" 200
```
So the test was still there but when loading results it was already deleted, because now it returns a 404.

The according code is

```
 93 return {} unless -r (my $file = path($dir, "details-$name.json"));
 94 
 95 my $json_data = $file->slurp;
 96 die qq{Malformed JSON file "$file": $@} unless my $json = eval { decode_json($json_data) };
```

so not an atomic operation.

## Acceptance criteria
* **AC1:** A unit test ensures that a not readable test module result file is handled and gracefully returned to the web UI and no error in log
* **AC2:** The handling is atomic, not "check if readable and then read"

## Suggestions
* Instead of trying to read and then fail we should handle the read attempt as we handle the exception in line 96 and return `{}` in case of error

Back