)]}'
{"openstack_health/api.py":[{"author":{"_account_id":10644,"name":"David Paterson","email":"davpat2112@yahoo.com","username":"dpaterson"},"change_message_id":"d82fdc453508c7f1f47612b3905d6b750df944d0","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                thread.join()"},{"line_number":519,"context_line":"            return {\u0027test_runs\u0027: output, \u0027bugs\u0027: bug_dict}"},{"line_number":520,"context_line":"    results \u003d _get_recent(status)"},{"line_number":521,"context_line":"    return jsonify(results)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def _periodic_refresh_cache(cache, status, creator, mutex):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_a8454eb4","line":521,"range":{"start_line":521,"start_character":26,"end_line":521,"end_character":27},"updated":"2016-06-09 18:01:38.000000000","message":"What happens if jsonify() cannot parse results?  Is a meaningful error returned?","commit_id":"83e0e1e75546738095e472b8de4d9829e7e69210"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"2929ea21c01693c3b6679882821830f11b2ab999","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                thread.join()"},{"line_number":519,"context_line":"            return {\u0027test_runs\u0027: output, \u0027bugs\u0027: bug_dict}"},{"line_number":520,"context_line":"    results \u003d _get_recent(status)"},{"line_number":521,"context_line":"    return jsonify(results)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def _periodic_refresh_cache(cache, status, creator, mutex):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7f8d547b","line":521,"range":{"start_line":521,"start_character":26,"end_line":521,"end_character":27},"in_reply_to":"7aa08908_0846ed20","updated":"2016-06-13 18:16:13.000000000","message":"In my testing jsonify either returns a valid JSON string or an error (causing flask to return non-200 status which the UI will reflect). Errors are pretty rare though, given that json.dumps supports pretty much all of python\u0027s base types. But when they do happen, we should get a stack dump in the logs.","commit_id":"83e0e1e75546738095e472b8de4d9829e7e69210"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"42b504af6bdc80dda1d6abbd2ac4bc8b90e782a5","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                thread.join()"},{"line_number":519,"context_line":"            return {\u0027test_runs\u0027: output, \u0027bugs\u0027: bug_dict}"},{"line_number":520,"context_line":"    results \u003d _get_recent(status)"},{"line_number":521,"context_line":"    return jsonify(results)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def _periodic_refresh_cache(cache, status, creator, mutex):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d2dcc876","line":521,"range":{"start_line":521,"start_character":26,"end_line":521,"end_character":27},"in_reply_to":"7aa08908_a8454eb4","updated":"2016-06-09 18:09:35.000000000","message":"There is probably a processing error, I\u0027m not exactly sure. It\u0027s just a wrapper around json.dumps(). \n\nThis specific case was added from a previous revision where the async worker was callign get_recent_test_status() directly without a flask context. The RuntimeError was being raised by flask in this case because there wasn\u0027t a context for jsonify.","commit_id":"83e0e1e75546738095e472b8de4d9829e7e69210"},{"author":{"_account_id":10644,"name":"David Paterson","email":"davpat2112@yahoo.com","username":"dpaterson"},"change_message_id":"7ce3973ffc6cc5c90dd7516b6a9faf4422bfaf34","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                thread.join()"},{"line_number":519,"context_line":"            return {\u0027test_runs\u0027: output, \u0027bugs\u0027: bug_dict}"},{"line_number":520,"context_line":"    results \u003d _get_recent(status)"},{"line_number":521,"context_line":"    return jsonify(results)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def _periodic_refresh_cache(cache, status, creator, mutex):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_0846ed20","line":521,"range":{"start_line":521,"start_character":26,"end_line":521,"end_character":27},"in_reply_to":"7aa08908_d2dcc876","updated":"2016-06-10 15:02:12.000000000","message":"Was just wondering from a UX perspective, looks like whatever is raised here will bubble all the way up to UI.","commit_id":"83e0e1e75546738095e472b8de4d9829e7e69210"}]}
