Skip to content

Commit f73f6dc

Browse files
authored
ticket-parser: Add error message for log to TError struct of ticket parser (#11403)
1 parent 9fb36d1 commit f73f6dc

File tree

3 files changed

+22
-12
lines changed

3 files changed

+22
-12
lines changed

ydb/core/base/ticket_parser.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,24 @@ namespace NKikimr {
154154

155155
struct TError {
156156
TString Message;
157+
TString LogMessage;
157158
bool Retryable = true;
158159

159160
bool empty() const {
160-
return Message.empty();
161+
return Message.empty() && LogMessage.empty();
162+
}
163+
164+
bool HasMessage() const {
165+
return !Message.empty();
166+
}
167+
168+
bool HasLogMessage() const {
169+
return !LogMessage.empty();
161170
}
162171

163172
void clear() {
164173
Message.clear();
174+
LogMessage.clear();
165175
Retryable = true;
166176
}
167177

ydb/core/security/secure_request.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class TSecureRequestActor : public TBase {
4747
if (!GetAdministrationAllowedSIDs().empty()) {
4848
const auto& allowedSIDs(GetAdministrationAllowedSIDs());
4949
if (std::find_if(allowedSIDs.begin(), allowedSIDs.end(), [&result](const TString& sid) -> bool { return result.Token->IsExist(sid); }) == allowedSIDs.end()) {
50-
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{"Administrative access denied", false}, ctx);
50+
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{.Message = "Administrative access denied", .Retryable = false}, ctx);
5151
}
5252
}
5353
UserAdmin = true;
@@ -59,7 +59,7 @@ class TSecureRequestActor : public TBase {
5959

6060
void Handle(TEvents::TEvUndelivered::TPtr&, const TActorContext& ctx) {
6161
if (IsTokenRequired()) {
62-
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{"Access denied - error parsing token", false}, ctx);
62+
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{.Message = "Access denied - error parsing token", .Retryable = false}, ctx);
6363
}
6464
static_cast<TBootstrap*>(this)->Bootstrap(ctx);
6565
}
@@ -166,7 +166,7 @@ class TSecureRequestActor : public TBase {
166166

167167
void Bootstrap(const TActorContext& ctx) {
168168
if (IsTokenRequired() && !IsTokenExists()) {
169-
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{"Access denied without user token", false}, ctx);
169+
return static_cast<TDerived*>(this)->OnAccessDenied(TEvTicketParser::TError{.Message = "Access denied without user token", .Retryable = false}, ctx);
170170
}
171171
if (SecurityToken.empty()) {
172172
if (!GetDefaultUserSIDs().empty()) {

ydb/core/security/ticket_parser_impl.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -649,14 +649,14 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
649649

650650
if (record.Ticket.EndsWith("@" BUILTIN_ERROR_DOMAIN)) {
651651
record.TokenType = TDerived::ETokenType::Builtin;
652-
SetError(key, record, { "Builtin error simulation" });
652+
SetError(key, record, { .Message = "Builtin error simulation" });
653653
CounterTicketsBuiltin->Inc();
654654
return true;
655655
}
656656

657657
if (record.Ticket.EndsWith("@" BUILTIN_SYSTEM_DOMAIN)) {
658658
record.TokenType = TDerived::ETokenType::Builtin;
659-
SetError(key, record, { "System domain not available for user usage", false });
659+
SetError(key, record, { .Message = "System domain not available for user usage", .Retryable = false });
660660
CounterTicketsBuiltin->Inc();
661661
return true;
662662
}
@@ -977,12 +977,12 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
977977
.AuthType = record.GetAuthType()
978978
}));
979979
} else {
980-
SetError(key, record, {errorMessage, false});
980+
SetError(key, record, {.Message = errorMessage, .Retryable = false});
981981
}
982982
} else {
983983
if (record.ResponsesLeft == 0 && (record.TokenType == TDerived::ETokenType::Unknown || record.TokenType == TDerived::ETokenType::AccessService || record.TokenType == TDerived::ETokenType::ApiKey)) {
984984
bool retryable = IsRetryableGrpcError(response->Status);
985-
SetError(key, record, {response->Status.Msg, retryable});
985+
SetError(key, record, {.Message = response->Status.Msg, .Retryable = retryable});
986986
}
987987
}
988988
if (record.ResponsesLeft == 0) {
@@ -1011,7 +1011,7 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
10111011
auto& record = it->second;
10121012
record.ResponsesLeft--;
10131013
if (!ev->Get()->Status.Ok()) {
1014-
SetError(key, record, {ev->Get()->Status.Msg});
1014+
SetError(key, record, {.Message = ev->Get()->Status.Msg});
10151015
} else {
10161016
GetDerived()->SetToken(key, record, ev);
10171017
}
@@ -1033,7 +1033,7 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
10331033
auto& record = it->second;
10341034
record.ResponsesLeft--;
10351035
if (!ev->Get()->Status.Ok()) {
1036-
SetError(key, record, {ev->Get()->Status.Msg});
1036+
SetError(key, record, {.Message = ev->Get()->Status.Msg});
10371037
} else {
10381038
SetToken(key, record, new NACLib::TUserToken(record.Ticket, ev->Get()->Response.name() + "@" + ServiceDomain, {}));
10391039
}
@@ -1322,7 +1322,7 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
13221322
}
13231323
} else {
13241324
bool retryable = IsRetryableGrpcError(response->Status);
1325-
itPermission->second.Error = {response->Status.Msg, retryable};
1325+
itPermission->second.Error = {.Message = response->Status.Msg, .Retryable = retryable};
13261326
if (itPermission->second.Subject.empty() || !retryable) {
13271327
itPermission->second.Subject.clear();
13281328
BLOG_TRACE("Ticket "
@@ -1433,7 +1433,7 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
14331433
} else {
14341434
BLOG_D("Expired ticket " << record.GetMaskedTicket());
14351435
if (!record.AuthorizeRequests.empty()) {
1436-
record.Error = {"Timed out", true};
1436+
record.Error = {.Message = "Timed out", .Retryable = true};
14371437
Respond(record);
14381438
}
14391439
userTokens.erase(it);

0 commit comments

Comments
 (0)