Catch and fix EOS regressions in tape specific APIs
Summary
We recently found that some eos versions containing refactored xrootd/HTTP REST code introduced some regressions that are affecting GFAL and FTS.
These regressions are notably affecting eos 4.8.79 that has been packaged with cta versions 4.6.1-1 to 4.7.5-1.
Production is not affected: running eos 4.8.78 that is safe.
But we need a few things:
- prevent propagation of eos 4.8.79 on eoscta sites that may use FTS/GFAL
- specify xrootd APIs according to FTS de-facto standard
- write some CI scripts to catch regressions that may change these behaviors and subsequently break FTS at our expense
We could add this information in cta-release
RPM in order to identify these bad combinations of CTA releases: preflight
Communication plan
- WARNING email sent to RAL
- CTA community has been notified
Some regression/expected behavior from FTS
xrdfs query prepare
FTS expects that xrdfs query prepare
reply with the same order and preserve duplicates as metadata queries are passed in the xrootd file path and therefore are not deduplicated by FTS in this case.
eos 4.8.78
# xrdfs root://localhost query prepare 0 /eos/ctaatlas/tmp/2 /eos/ctaatlas/tmp/1 /eos/ctaatlas/tmp/1?t=1 | jq .
{
"request_id": "0",
"responses": [
{
"path": "/eos/ctaatlas/tmp/2",
"path_exists": true,
"on_tape": false,
"online": true,
"requested": false,
"has_reqid": false,
"req_time": "",
"error_text": "USER ERROR: you don't have prepare permission"
},
{
"path": "/eos/ctaatlas/tmp/1",
"path_exists": true,
"on_tape": false,
"online": true,
"requested": false,
"has_reqid": false,
"req_time": "",
"error_text": "USER ERROR: you don't have prepare permission"
},
{
"path": "/eos/ctaatlas/tmp/1",
"path_exists": true,
"on_tape": false,
"online": true,
"requested": false,
"has_reqid": false,
"req_time": "",
"error_text": "USER ERROR: you don't have prepare permission"
}
]
}
eos 4.8.79
# xrdfs root://localhost query prepare 0 /eos/ctaeos/tmp/2 /eos/ctaeos/tmp/1 /eos/ctaeos/tmp/1?t=1 | jq .
{
"request_id": "0",
"responses": [
{
"error_text": "USER ERROR: you don't have prepare permission",
"has_reqid": false,
"on_tape": false,
"online": true,
"path": "/eos/ctaeos/tmp/1",
"path_exists": true,
"req_time": "",
"requested": false
},
{
"error_text": "USER ERROR: you don't have prepare permission",
"has_reqid": false,
"on_tape": false,
"online": true,
"path": "/eos/ctaeos/tmp/2",
"path_exists": true,
"req_time": "",
"requested": false
}
]
}
List other possible regressions?
To be defined with FTS developers.