The error message:
Caused by: java.io.IOException: Failed to retrieve content of https://repo.jenkins-ci.org/releases/io/jenkins/plugins/tuleap-api/2.3.0/tuleap-api-2.3.0.pom (cached)
Notice the little "(cached)" at the end there. We cache 404 responses since we download lots of optional files (like index.jelly from hpi's).
In this case, it happened because the jpi was available 6 minutes before the rest of the files: https://repo.jenkins-ci.org/releases/io/jenkins/plugins/tuleap-api/2.3.0/
The way this simple cache works is that we encode the URL into base64 and if we get a response, store it in a file of that name. In case of error, it's an empty directory of this name. So, to clear all error responses (there's just a few hundred or so) and have the tool re-download them we just need to delete all (empty) directories in the Artifactory cache, something like:
println "find /mnt/jenkins/agent-workspace/workspace/update_center/caches/artifactory -mindepth 1 -maxdepth 1 -type d -print -delete".execute().text
Builds were initially still failing but I think this is a bug I introduced when I created the fallback mechanism for Jenkins 2.300 and 2.289.2, they were successful 2-3 builds later.
The PRs against the default branch did nothing as we're currently running off https://github.com/jenkins-infra/update-center2/tree/camilla-fallback to handle the 2.300 and 2.289.2 workaround ( https://groups.google.com/g/jenkinsci-dev/c/4sgBC1crUJw ).