#610 Return a JSON error message when the Koji connection times out
Merged 3 years ago by mprahl. Opened 3 years ago by mprahl.

file modified
+3 -2
@@ -10,7 +10,7 @@ 

  from greenwave.subjects.subject_type import load_subject_types

  

  from dogpile.cache import make_region

- from requests import ConnectionError, Timeout

+ import requests

  from werkzeug.exceptions import default_exceptions

  

  log = logging.getLogger(__name__)
@@ -45,7 +45,8 @@ 

      for code in default_exceptions.keys():

          app.register_error_handler(code, json_error)

      app.register_error_handler(ConnectionError, json_error)

-     app.register_error_handler(Timeout, json_error)

+     app.register_error_handler(requests.ConnectionError, json_error)

+     app.register_error_handler(requests.Timeout, json_error)

  

      # register blueprints

      app.register_blueprint(api, url_prefix="/api/v1.0")

@@ -4,8 +4,7 @@ 

  import os

  

  import pytest

- 

- from requests import ConnectionError, ConnectTimeout, Timeout

+ import requests

  from werkzeug.exceptions import InternalServerError

  

  import greenwave.app_factory
@@ -19,8 +18,9 @@ 

  @pytest.mark.parametrize(('error, expected_status_code,'

                            'expected_error_message_part'), [

      (ConnectionError('ERROR'), 502, 'ERROR'),

-     (ConnectTimeout('TIMEOUT'), 502, 'TIMEOUT'),

-     (Timeout('TIMEOUT'), 504, 'TIMEOUT'),

+     (requests.ConnectionError('ERROR'), 502, 'ERROR'),

+     (requests.ConnectTimeout('TIMEOUT'), 502, 'TIMEOUT'),

+     (requests.Timeout('TIMEOUT'), 504, 'TIMEOUT'),

      (InternalServerError(), 500, 'The server encountered an internal error')

  ])

  def test_json_connection_error(error, expected_status_code,

file modified
+3 -3
@@ -8,7 +8,7 @@ 

  

  from flask import jsonify, current_app, request

  from flask.config import Config

- from requests import ConnectionError, Timeout

+ import requests

  from werkzeug.exceptions import HTTPException

  

  log = logging.getLogger(__name__)
@@ -26,11 +26,11 @@ 

      if isinstance(error, HTTPException):

          msg = error.description

          status_code = error.code

-     elif isinstance(error, ConnectionError):

+     elif isinstance(error, (ConnectionError, requests.ConnectionError)):

          current_app.logger.exception('Connection error: {}'.format(error))

          msg = 'Error connecting to upstream server: {}'.format(error)

          status_code = 502

-     elif isinstance(error, Timeout):

+     elif isinstance(error, requests.Timeout):

          current_app.logger.exception('Timeout error: {}'.format(error))

          msg = 'Timeout connecting to upstream server: {}'.format(error)

          status_code = 504

requests.ConnectionError was transformed to a JSON error but not the plain ConnectionError from the standard library.

Pull-Request has been merged by mprahl

3 years ago