Skip to content

Commit ae7cb3b

Browse files
committed
Fix by pr comments
1 parent 5c11713 commit ae7cb3b

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

ydb/core/fq/libs/actors/database_resolver.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@ class TResponseProcessor : public TActorBootstrapped<TResponseProcessor>
140140

141141
try {
142142
HandleResponse(ev, requestIter, errorMessage, result);
143-
}
144-
catch (const std::exception& e) {
143+
} catch (...) {
145144
const TString msg = TStringBuilder() << "error while response processing, params "
146145
<< ((requestIter != Requests.end()) ? requestIter->second.ToDebugString() : TString{"unknown"})
147-
<< ", details: " << e.what();
146+
<< ", details: " << CurrentExceptionMessage();
148147
LOG_E("ResponseProccessor::Handle(TEvHttpIncomingResponse): " << msg);
149148
}
150-
LOG_D("ResponseProcessor::Handle(HttpIncomingResponse): progress: "
149+
150+
LOG_T("ResponseProcessor::Handle(HttpIncomingResponse): progress: "
151151
<< DatabaseId2Description.size() << " of " << Requests.size() << " requests are done");
152152

153153
if (HandledIds == Requests.size()) {
@@ -241,15 +241,7 @@ class TResponseProcessor : public TActorBootstrapped<TResponseProcessor>
241241
const auto& status = ev->Get()->Response->Status;
242242

243243
if (status == "403") {
244-
const auto second = requestIter->second;
245-
246-
auto result = TStringBuilder() << "You have no permission to resolve database id into database endpoint. ";
247-
if (second.DatabaseType == EDatabaseType::ClickHouse || second.DatabaseType == EDatabaseType::PostgreSQL) {
248-
auto mdbTypeStr = NYql::DatabaseTypeLowercase(second.DatabaseType);
249-
result << "Please check that your service account has role " <<
250-
"`managed-" << mdbTypeStr << ".viewer`.";
251-
}
252-
return result;
244+
return TStringBuilder() << "You have no permission to resolve database id into database endpoint. " + DetailedPermissionsError(requestIter->second);
253245
}
254246

255247
auto errorMessage = ev->Get()->Error;
@@ -265,6 +257,17 @@ class TResponseProcessor : public TActorBootstrapped<TResponseProcessor>
265257
return errorMessage;
266258
}
267259

260+
261+
TString DetailedPermissionsError(const TResolveParams& params) const {
262+
263+
if (params.DatabaseType == EDatabaseType::ClickHouse || params.DatabaseType == EDatabaseType::PostgreSQL) {
264+
auto mdbTypeStr = NYql::DatabaseTypeLowercase(params.DatabaseType);
265+
return TStringBuilder() << "Please check that your service account has role " <<
266+
"`managed-" << mdbTypeStr << ".viewer`.";
267+
}
268+
return "";
269+
}
270+
268271
const TActorId Sender;
269272
TCache& Cache;
270273
const TRequestMap Requests;

ydb/core/fq/libs/actors/ut/database_resolver_ut.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ Y_UNIT_TEST_SUITE(TDatabaseResolverTests) {
297297
Y_UNIT_TEST(ClickHouse_PermissionDenied) {
298298
NYql::TIssues issues{
299299
NYql::TIssue(
300-
NoPermissionStr + "Please check that your service account has role `managed-clickhouse.viewer`."
300+
TStringBuilder{} << NoPermissionStr << "Please check that your service account has role `managed-clickhouse.viewer`."
301301
)
302302
};
303303

@@ -365,7 +365,7 @@ Y_UNIT_TEST_SUITE(TDatabaseResolverTests) {
365365
Y_UNIT_TEST(PostgreSQL_PermissionDenied) {
366366
NYql::TIssues issues{
367367
NYql::TIssue(
368-
NoPermissionStr + "Please check that your service account has role `managed-postgresql.viewer`."
368+
TStringBuilder{} << NoPermissionStr << "Please check that your service account has role `managed-postgresql.viewer`."
369369
)
370370
};
371371

ydb/library/yql/providers/common/db_id_async_resolver/db_async_resolver.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ struct TDatabaseAuth {
6666
NConnector::NApi::EProtocol Protocol = NConnector::NApi::EProtocol::PROTOCOL_UNSPECIFIED;
6767

6868
bool operator==(const TDatabaseAuth& other) const {
69-
return std::tie(StructuredToken, AddBearerToToken, UseTls) == std::tie(other.StructuredToken, other.AddBearerToToken, other.UseTls);
69+
return std::tie(StructuredToken, AddBearerToToken, UseTls, Protocol) == std::tie(other.StructuredToken, other.AddBearerToToken, other.UseTls, Protocol);
7070
}
7171

7272
bool operator!=(const TDatabaseAuth& other) const {

0 commit comments

Comments
 (0)