cloudfoundry-community / cloudfoundry-community/cf-python-client
Graceful continuation on NOT_FOUND
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 55
- Forks
- 54
- PR merge metrics
- No merged PRs in 30d
Description
Hi - We are using cf-python-client as part of a task which downloads each app-blob in turn. As we have tens of thousands of containers, this job takes 8-10 hours to complete.
The job is theoretically quite straightforward...
for app in cfClient.v3.apps:
space_name=app.space()['name']
org_name=app.space().organization()['name']
...
More often than not, during the running of this task, we'll encounter an error along the lines of...
cloudfoundry_client.errors.InvalidStatusCode: NOT_FOUND = {"errors": [{"detail": "Space not found", "title": "CF-ResourceNotFound", "code": 10010}]}
or
cloudfoundry_client.errors.InvalidStatusCode: NOT_FOUND = {"errors": [{"detail": "App not found", "title": "CF-ResourceNotFound", "code": 10010}]}
Given the number of orgs/spaces/apps we have in service, it is not too surprising that an app or space which was present at the start of the task is no longer around 6-8 hours later.
When we encounter an error like this we have no options but to restart the 8-10 hour task from the beginning again and hope that it manages to make it through without an error.
I was just wondering if there are any options to allow for more graceful continuation when objects are no longer found? This doesn't seem to be something that I can handle with a try: except: - Are there any options to make errors like this non-fatal?
Cheers!!
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the v3.apps iteration and the app.space() and space.organization() calls shown in the report, then trace how InvalidStatusCode responses are handled. Done means a NOT_FOUND for an app or space can be skipped while the long-running traversal continues, with behavior defined for the remaining resources.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100