Skip to content

Commit cb09349

Browse files
authored
Recover from an exception inside building of dq yson result (#10795)
1 parent 6004840 commit cb09349

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

ydb/library/yql/providers/dq/provider/yql_dq_gateway.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -236,17 +236,24 @@ class TDqGatewaySession: public std::enable_shared_from_this<TDqGatewaySession>
236236
rows.emplace_back(std::move(batch));
237237
}
238238

239-
NYql::NDqs::TProtoBuilder protoBuilder(resultFormatSettings.ResultType, resultFormatSettings.Columns);
239+
result.AddIssues(issues);
240+
try {
241+
NYql::NDqs::TProtoBuilder protoBuilder(resultFormatSettings.ResultType, resultFormatSettings.Columns);
240242

241-
bool ysonTruncated = false;
242-
result.Data = protoBuilder.BuildYson(std::move(rows),
243-
result.Truncated ? resultFormatSettings.SizeLimit.GetOrElse(Max<ui64>()) : Max<ui64>(),
244-
result.Truncated ? resultFormatSettings.RowsLimit.GetOrElse(Max<ui64>()) : Max<ui64>(),
245-
&ysonTruncated);
243+
bool ysonTruncated = false;
244+
result.Data = protoBuilder.BuildYson(std::move(rows),
245+
result.Truncated ? resultFormatSettings.SizeLimit.GetOrElse(Max<ui64>()) : Max<ui64>(),
246+
result.Truncated ? resultFormatSettings.RowsLimit.GetOrElse(Max<ui64>()) : Max<ui64>(),
247+
&ysonTruncated);
246248

247-
result.Truncated = result.Truncated || ysonTruncated;
248-
result.AddIssues(issues);
249-
result.SetSuccess();
249+
result.Truncated = result.Truncated || ysonTruncated;
250+
result.SetSuccess();
251+
} catch (...) {
252+
YQL_CLOG(ERROR, ProviderDq) << "Failed to build yson result: " << CurrentExceptionMessage();
253+
error = true;
254+
auto issue = TIssue("Failed to build query result (probably due to malformed UDF)");
255+
result.AddIssue(issue.SetCode(TIssuesIds::DQ_GATEWAY_ERROR, TSeverityIds::S_ERROR));
256+
}
250257
} else {
251258
YQL_CLOG(ERROR, ProviderDq) << "Issue " << issues.ToString();
252259
result.AddIssues(issues);

0 commit comments

Comments
 (0)