Skip to content

Commit a697f06

Browse files
authored
Add UNAUTHORIZED status to dq (#15138)
1 parent 0bab9e9 commit a697f06

File tree

6 files changed

+16
-8
lines changed

6 files changed

+16
-8
lines changed

ydb/core/kqp/compute_actor/kqp_pure_compute_actor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ void TKqpComputeActor::HandleExecute(TEvKqpCompute::TEvScanError::TPtr& ev) {
283283
IssuesFromMessage(ev->Get()->Record.GetIssues(), issues);
284284

285285
State = NDqProto::COMPUTE_STATE_FAILURE;
286-
ReportStateAndMaybeDie(YdbStatusToDqStatus(status), issues);
286+
ReportStateAndMaybeDie(YdbStatusToDqStatus(status, EStatusCompatibilityLevel::WithUnauthorized), issues);
287287
}
288288

289289
IActor* CreateKqpComputeActor(const TActorId& executerId, ui64 txId, NDqProto::TDqTask* task,

ydb/core/sys_view/ut_kqp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ void SetupAuthAccessEnvironment(TTestEnv& env) {
151151
}
152152

153153
void CheckAuthAdministratorAccessIsRequired(TScanQueryPartIterator& it) {
154-
NKqp::StreamResultToYson(it, false, EStatus::INTERNAL_ERROR,
154+
NKqp::StreamResultToYson(it, false, EStatus::UNAUTHORIZED,
155155
"Administrator access is required");
156156
}
157157

ydb/library/yql/dq/actors/dq.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ Ydb::StatusIds::StatusCode DqStatusToYdbStatus(NYql::NDqProto::StatusIds::Status
3232
return Ydb::StatusIds::SCHEME_ERROR;
3333
case NYql::NDqProto::StatusIds::UNSUPPORTED:
3434
return Ydb::StatusIds::UNSUPPORTED;
35+
case NYql::NDqProto::StatusIds::UNAUTHORIZED:
36+
return Ydb::StatusIds::UNAUTHORIZED;
3537
case NYql::NDqProto::StatusIds::GENERIC_ERROR:
3638
default:
3739
return Ydb::StatusIds::GENERIC_ERROR;
3840
}
3941
}
4042

41-
NYql::NDqProto::StatusIds::StatusCode YdbStatusToDqStatus(Ydb::StatusIds::StatusCode statusCode) {
43+
NYql::NDqProto::StatusIds::StatusCode YdbStatusToDqStatus(Ydb::StatusIds::StatusCode statusCode, EStatusCompatibilityLevel compatibility) {
4244
switch(statusCode) {
4345
case Ydb::StatusIds::STATUS_CODE_UNSPECIFIED:
4446
return NYql::NDqProto::StatusIds::UNSPECIFIED;
@@ -47,6 +49,9 @@ NYql::NDqProto::StatusIds::StatusCode YdbStatusToDqStatus(Ydb::StatusIds::Status
4749
case Ydb::StatusIds::BAD_REQUEST:
4850
return NYql::NDqProto::StatusIds::BAD_REQUEST;
4951
case Ydb::StatusIds::UNAUTHORIZED:
52+
return compatibility >= EStatusCompatibilityLevel::WithUnauthorized
53+
? NYql::NDqProto::StatusIds::UNAUTHORIZED
54+
: NYql::NDqProto::StatusIds::INTERNAL_ERROR;
5055
case Ydb::StatusIds::INTERNAL_ERROR:
5156
return NYql::NDqProto::StatusIds::INTERNAL_ERROR;
5257
case Ydb::StatusIds::ABORTED:

ydb/library/yql/dq/actors/dq.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111

1212
namespace NYql::NDq {
1313

14+
enum class EStatusCompatibilityLevel {
15+
Basic,
16+
WithUnauthorized
17+
};
18+
1419
Ydb::StatusIds::StatusCode DqStatusToYdbStatus(NYql::NDqProto::StatusIds::StatusCode statusCode);
15-
NYql::NDqProto::StatusIds::StatusCode YdbStatusToDqStatus(Ydb::StatusIds::StatusCode statusCode);
20+
NYql::NDqProto::StatusIds::StatusCode YdbStatusToDqStatus(Ydb::StatusIds::StatusCode statusCode, EStatusCompatibilityLevel compatibility = EStatusCompatibilityLevel::Basic);
1621

1722
struct TEvDq {
1823

ydb/library/yql/dq/actors/protos/dq_status_codes.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ message StatusIds {
2222
SCHEME_ERROR = 14;
2323
GENERIC_ERROR = 15;
2424
UNDETERMINED = 16;
25+
UNAUTHORIZED = 17;
2526
}
2627
}

ydb/tests/functional/tenants/test_auth_system_views.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,5 @@ def test_tenant_auth_groups_access(ydb_endpoint, ydb_root, prepared_test_env, yd
162162

163163
else:
164164
assert error is not None, result
165-
166-
# FIXME: status should have been UNAUTHORIZED
167-
# assert error.status == ydb.issues.StatusCode.UNAUTHORIZED
168-
assert error.status == ydb.issues.StatusCode.INTERNAL_ERROR
165+
assert error.status == ydb.issues.StatusCode.UNAUTHORIZED
169166
assert 'Administrator access is required' in error.message

0 commit comments

Comments
 (0)