evalai-cli icon indicating copy to clipboard operation
evalai-cli copied to clipboard

Keyerror on logging errors when found in making a call to api

Open burnerlee opened this issue 4 years ago • 8 comments

When an error is received while making a request to the backend, we catch it, and if it is present in the EVALAI_ERROR_CODES, we log it using the lines:

if response.status_code in EVALAI_ERROR_CODES:
    validate_token(response.json())
    echo(
        style(
            "\nError: {}\n"
            "\nUse `evalai challenges` to fetch the active challenges.\n"
            "\nUse `evalai challenge CHALLENGE phases` to fetch the "
            "active phases.\n".format(response.json()["error"]),
            fg="red",
            bold=True,
        )
    )

But response.json() does not have the key error in cases. For e.g., I made a request using an expired token and got an error. So when I logged the entire json.response(), it was something like

{'detail': 'Given token not valid for any token type', 'code': 'token_not_valid', 'messages': [{'token_class': 'RefreshToken', 'token_type': 'refresh', 'message': 'Token is invalid or expired'}]}

This does not contains a key named error

burnerlee avatar Jan 26 '21 13:01 burnerlee

Hi @burnerlee, I run in the same error as you. I'm using a fresh install of v1.3.12.

phiyodr avatar Feb 23 '21 10:02 phiyodr

@burnerlee nice catch, this error response is from jwt token API that we added recently. If you are interested you can pick this issue and send a PR to fix it.

Ram81 avatar Feb 23 '21 12:02 Ram81

@Ram81 yeah sure, I'll make a PR for this

burnerlee avatar Feb 23 '21 12:02 burnerlee

@Ram81, should I do something like, checking if error key is present in the response, if it does, use the same value, if it doesn't then use the detail key for getting the error?

burnerlee avatar Feb 28 '21 15:02 burnerlee

@burnerlee yes

Ram81 avatar Feb 28 '21 15:02 Ram81

Oh okay, it is only this jwt error log which causes this error, or there may be some other errors too? Which need to be handled 😅

burnerlee avatar Feb 28 '21 15:02 burnerlee

For now its just the JWT API which has a different error response format. Rest of our APIs are already handled

Ram81 avatar Feb 28 '21 15:02 Ram81

thank you so much ❤️

burnerlee avatar Feb 28 '21 16:02 burnerlee