Skip to content

Regression in max_retries usage on GetSerialPortOutput() #1243

Closed

Description

@same-id

After v2.0.2, max_retries is ignored in GetSerialPortOutput().
This previously worked on v1.12.8.

All our tests are failing since they used this feature of the python library.

I traced the problem to this commit:

#1116 and #1117

c6912836 - fix: handle error on service not enabled (#1117)

1117 changed the default reason to be error.status which is PERMISSION_DENIAD instead using error.errors[0].reason which is rateLimitExceeded and therefore later ignored in:

# Only retry on rate limit related failures.
if reason in ("userRateLimitExceeded", "rateLimitExceeded"):
    return True

Example for such json:

{'error': {'code': 403,
           'errors': [{'domain': 'usageLimits',
                       'message': 'Quota exceeded for quota group '
                                  "'GetSerialPortOutputGroup' and limit "
                                  "'Instance GetSerialPortOutput requests per "
                                  "user per 100 seconds' of service "
                                  "'compute.googleapis.com' for consumer "
                                  "'project_number:REDACTED'.",
                       'reason': 'rateLimitExceeded'}],
           'message': 'Quota exceeded for quota group '
                      "'GetSerialPortOutputGroup' and limit 'Instance "
                      "GetSerialPortOutput requests per user per 100 seconds' "
                      "of service 'compute.googleapis.com' for consumer "
                      "'project_number:REDACTED'.",
           'status': 'PERMISSION_DENIED'}}

I think that correct fix for #1117 should not have changed the order of lookup - first check for error.errors[0].reason and if it doesn't exist fallback to error.status

Sam

Activity

  1. self-assigned this
    on Mar 9, 2021
  2. added
    priority: p2Moderately-important priority. Fix may not be included in next release.
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    type: docsImprovement to the documentation for an API.
    and removed
    triage meI really want to be triaged.
    on Mar 9, 2021
  3. parthea commented on Mar 9, 2021

    @parthea
    Contributor

    I'm sorry that we introduced a regression! I have a potential fix in #1244. I still need to add unit tests and update the documentation.

  4. added a commit that references this issue on Mar 15, 2021
    c518472
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.type: docsImprovement to the documentation for an API.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions