def parse_error_page(html): parser = JettyErrorPageParser() parser.feed(html) if parser.title == ['HTTP ERROR: 500']: message = ' '.join(parser.message).strip() parse_and_raise_sql_error(message) raise errors.InternalError(message)
def parse_error_protobuf(text): message = common_pb2.WireMessage() message.ParseFromString(text) err = responses_pb2.ErrorResponse() err.ParseFromString(message.wrapped_message) parse_and_raise_sql_error(err.error_message) raise_sql_error(err.error_code, err.sql_state, err.error_message) raise errors.InternalError(err.error_message)
def parse_error_page(html): parser = JettyErrorPageParser() parser.feed(html) if parser.title == ['HTTP ERROR: 500']: message = ' '.join(parser.message).strip() match = re.match(r'^([^ ]+): ERROR (\d+) \(([0-9A-Z]{5})\): (.*?)$', message) if match is not None: exception, code, sqlstate, message = match.groups() code = int(code) for prefix, error_class in SQLSTATE_ERROR_CLASSES: if sqlstate.startswith(prefix): raise error_class(message, code, sqlstate) raise errors.InternalError(message)
def raise_sql_error(code, sqlstate, message): for prefix, error_class in SQLSTATE_ERROR_CLASSES: if sqlstate.startswith(prefix): raise error_class(message, code, sqlstate) raise errors.InternalError(message, code, sqlstate)