Skip to content

Commit b096bcf

Browse files
committed
SK-1906 Improve debugging in connections
1 parent aca63e1 commit b096bcf

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

skyflow/utils/_utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,11 @@ def parse_invoke_connection_response(api_response: requests.Response):
341341

342342
if 'x-request-id' in api_response.headers:
343343
message += ' - request id: ' + api_response.headers['x-request-id']
344+
345+
if 'error-from-client' in api_response.headers:
346+
error_from_client = api_response.headers['error-from-client']
347+
details = [{ "error_from_client": error_from_client }]
348+
raise SkyflowError(message, status_code, details=details)
344349

345350
raise SkyflowError(message, status_code)
346351

skyflow/vault/controller/_connections.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def invoke(self, request: InvokeConnectionRequest):
2727

2828
invoke_connection_request.headers['sky-metadata'] = json.dumps(get_metrics())
2929

30-
log_info(SkyflowMessages.Info.INVOKE_CONNECTION_TRIGGERED, self.__vault_client.get_logger())
30+
log_info(SkyflowMessages.Info.INVOKE_CONNECTION_TRIGGERED.value, self.__vault_client.get_logger())
3131

3232
try:
3333
response = session.send(invoke_connection_request)
@@ -36,5 +36,6 @@ def invoke(self, request: InvokeConnectionRequest):
3636
return invoke_connection_response
3737

3838
except Exception as e:
39+
if isinstance(e, SkyflowError): raise e
3940
raise SkyflowError(SkyflowMessages.Error.INVOKE_CONNECTION_FAILED.value,
4041
SkyflowMessages.ErrorCodes.SERVER_ERROR.value)

tests/vault/controller/test__connection.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,25 @@ def test_invoke_request_error(self, mock_send):
100100
with self.assertRaises(SkyflowError) as context:
101101
self.connection.invoke(request)
102102
self.assertEqual(context.exception.message, SkyflowMessages.Error.INVOKE_CONNECTION_FAILED.value)
103+
self.assertTrue(context.exception.details['error_from_client'])
103104

105+
@patch('requests.Session.send')
106+
def test_invoke_request_error_from_client(self, mock_send):
107+
mock_response = Mock()
108+
mock_response.status_code = FAILURE_STATUS_CODE
109+
mock_response.content = ERROR_RESPONSE_CONTENT
110+
mock_response.headers = {'error-from-client': True}
111+
mock_send.return_value = mock_response
112+
113+
request = InvokeConnectionRequest(
114+
method=RequestMethod.POST,
115+
body=VALID_BODY,
116+
path_params=VALID_PATH_PARAMS,
117+
headers=VALID_HEADERS,
118+
query_params=VALID_QUERY_PARAMS
119+
)
104120

121+
with self.assertRaises(SkyflowError) as context:
122+
self.connection.invoke(request)
123+
self.assertEqual(context.exception.message, SkyflowMessages.Error.INVOKE_CONNECTION_FAILED.value)
124+
self.assertTrue(context.exception.details['error_from_client'])

0 commit comments

Comments
 (0)