Project export ratelimit has wrong `Ratelimit-Reset` and no `Retry-After`
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=199738) </details> <!--IssueSummary end--> <!--- Please read this! Before opening a new issue, make sure to search for keywords in the issues filtered by the "regression" or "bug" label: - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=regression - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug and verify the issue you're about to submit isn't a duplicate. ---> ### Summary Ratelimit for project export has wrong `RateLimit-Reset:` and does not include `Retry-After:` header in `429 Too Many Requests` response. ### Steps to reproduce ```sh for i in 1 2; do curl -i -H "Authorization: Bearer ${TOKEN}" https://gitlab.com/api/v4/projects/"${PROJECT}"/export; done ``` ### Example Project N/A (any project) ### What is the current *bug* behavior? 1. There is no `Retry-After:` header: ``` HTTP/1.1 429 Too Many Requests Server: nginx Date: Thu, 30 Jan 2020 14:14:16 GMT Content-Type: application/json Content-Length: 89 Cache-Control: no-cache Vary: Origin X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-Request-Id: tS3lOyzMeF4 X-Runtime: 0.039384 RateLimit-Limit: 600 RateLimit-Observed: 5 RateLimit-Remaining: 595 RateLimit-Reset: 1580393717 RateLimit-ResetTime: Thu, 30 Jan 2020 14:15:17 GMT GitLab-LB: fe-15-lb-gprd GitLab-SV: localhost {"message":{"error":"This endpoint has been requested too many times. Try again later."}} ``` 1. `RateLimit-Reset{,Time}:` is wrong (it points 60 s into the future, it should be 300 s according to https://docs.gitlab.com/ee/user/project/settings/import_export.html#rate-limits). 2. There is no `Retry-After` ### What is the expected *correct* behavior? ``` RateLimit-Reset: <now() + remaining time> RateLimit-ResetTime: <same> Retry-After: <remaining time> ``` ### Relevant logs and/or screenshots See bug behaviour above. Also traceback from python-gitlab-1.6.0 (Debian 10): ``` Traceback (most recent call last): File "./export.py", line 33, in <module> main() File "./export.py", line 21, in main export = project.exports.create({}) File "/usr/lib/python3/dist-packages/gitlab/exceptions.py", line 246, in wrapped_f return f(*args, **kwargs) File "/usr/lib/python3/dist-packages/gitlab/mixins.py", line 204, in create **kwargs) File "/usr/lib/python3/dist-packages/gitlab/__init__.py", line 600, in http_post post_data=post_data, files=files, **kwargs) File "/usr/lib/python3/dist-packages/gitlab/__init__.py", line 489, in http_request wait_time = int(result.headers["Retry-After"]) File "/usr/lib/python3/dist-packages/requests/structures.py", line 52, in __getitem__ return self._store[key.lower()][1] KeyError: 'retry-after' ``` ### Output of checks This bug happens on GitLab.com ### Possible fixes This most likely originated in commit 091b6a8a. I don't know how to fix.
issue