Skip to content
代码片段 群组 项目
未验证 提交 fff69a3b 编辑于 作者: Allison Browne's avatar Allison Browne 提交者: GitLab
浏览文件

AI abstraction layer: Fix error handling to pass error message to logger

上级 dfc4fc3d
No related branches found
No related tags found
无相关合并请求
......@@ -72,6 +72,7 @@ def execute
rescue Net::ReadTimeout => error
Gitlab::ErrorTracking.track_exception(error)
Answer.error_answer(
error: error,
context: context,
content: _("I'm sorry, I couldn't respond in time. Please try again."),
error_code: "A1000"
......@@ -79,6 +80,7 @@ def execute
rescue Gitlab::Llm::AiGateway::Client::ConnectionError => error
Gitlab::ErrorTracking.track_exception(error)
Answer.error_answer(
error: error,
context: context,
error_code: "A1001"
)
......
......@@ -75,6 +75,7 @@ def execute
rescue Net::ReadTimeout => error
Gitlab::ErrorTracking.track_exception(error)
Answer.error_answer(
error: error,
context: context,
content: _("I'm sorry, I couldn't respond in time. Please try again."),
error_code: 'A1000'
......@@ -82,6 +83,7 @@ def execute
rescue Gitlab::Llm::AiGateway::Client::ConnectionError => error
Gitlab::ErrorTracking.track_exception(error)
Answer.error_answer(
error: error,
context: context,
error_code: "A1001"
)
......
......@@ -68,8 +68,8 @@ def self.default_final_message
"Please try a more specific request or enter /clear to start a new chat.")
end
def self.error_answer(context:, error_code: nil, content: default_error_answer)
logger.error(message: "Error", error: content, error_code: error_code)
def self.error_answer(context:, error_code: nil, content: default_error_answer, error: nil)
logger.error(message: error ? error.message : "Error", error: content, error_code: error_code)
track_event(context, 'error_answer')
new(
......
......@@ -14,8 +14,9 @@ def passed_content(_json)
.resource_serialized(content_limit: provider_prompt_class::MAX_CHARACTERS * 0.6)
"Please use this information about identified #{resource_name}: #{resource_serialized}"
rescue ArgumentError
rescue ArgumentError => error
Answer.error_answer(
error: error,
context: context,
error_code: "M5000"
)
......
......@@ -47,6 +47,7 @@ def perform(&_block)
Gitlab::ErrorTracking.track_exception(e)
return Answer.error_answer(
error: e,
context: context,
error_code: "M4001"
)
......
......@@ -141,9 +141,17 @@
end
describe '.error_answer' do
subject(:answer) { described_class.error_answer(context: context, content: "error", error_code: error_code) }
subject(:answer) do
described_class.error_answer(
context: context,
content: "error",
error_code: error_code,
error: error
)
end
let(:error_code) { nil }
let(:error) { StandardError.new('hello world') }
context 'when the answer has no error code' do
it 'returns final answer with error response' do
......@@ -173,7 +181,35 @@
it 'logs the error code' do
answer
expect(logger).to have_received(:error).with(message: "Error", error: "error", error_code: error_code)
expect(logger).to have_received(:error).with(error: "error", error_code: error_code,
message: 'hello world')
end
context 'when error has no message' do
let(:error) { StandardError.new }
it 'logs the error code' do
answer
expect(logger).to have_received(:error).with(error: "error", error_code: error_code,
message: 'StandardError')
end
end
context 'when error is not passed' do
subject(:answer) do
described_class.error_answer(
context: context,
content: "error",
error_code: error_code
)
end
it 'logs the error code' do
answer
expect(logger).to have_received(:error).with(message: "Error", error: "error", error_code: error_code)
end
end
end
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册