Skip to content

Commit c3e45fa

Browse files
add chunk error handler
1 parent e088f9e commit c3e45fa

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

ydb/core/mon/mon.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,7 @@ class THttpMonAuthorizedActorRequest : public TActorBootstrapped<THttpMonAuthori
10501050
return;
10511051
}
10521052
}
1053-
Send(new IEventHandle(Fields.Handler, SelfId(), Event->ReleaseBase().Release(), IEventHandle::FlagTrackDelivery, Event->Cookie));
1053+
SendRequest();
10541054
Become(&THttpMonAuthorizedActorRequest::StateWork);
10551055
}
10561056

@@ -1150,17 +1150,17 @@ class THttpMonAuthorizedActorRequest : public TActorBootstrapped<THttpMonAuthori
11501150
ReplyErrorAndPassAway(Ydb::StatusIds::UNAUTHORIZED, issues, true);
11511151
}
11521152

1153-
void SendRequest(const NKikimr::NGRpcService::TEvRequestAuthAndCheckResult& result) {
1153+
void SendRequest(const NKikimr::NGRpcService::TEvRequestAuthAndCheckResult* result = nullptr) {
11541154
NHttp::THttpIncomingRequestPtr request = Event->Get()->Request;
11551155
if (Authorizer) {
1156-
TString user = result.UserToken ? result.UserToken->GetUserSID() : "anonymous";
1156+
TString user = result->UserToken ? result->UserToken->GetUserSID() : "anonymous";
11571157
ALOG_NOTICE(NActorsServices::HTTP, (request->Address ? request->Address->ToString() : "")
11581158
<< " " << user
11591159
<< " " << request->Method
11601160
<< " " << request->URL);
11611161
}
1162-
if (result.UserToken) {
1163-
Event->Get()->UserToken = result.UserToken->GetSerializedToken();
1162+
if (result && result->UserToken) {
1163+
Event->Get()->UserToken = result->UserToken->GetSerializedToken();
11641164
}
11651165
Send(new IEventHandle(Fields.Handler, SelfId(), Event->ReleaseBase().Release(), IEventHandle::FlagTrackDelivery, Event->Cookie));
11661166

@@ -1190,7 +1190,7 @@ class THttpMonAuthorizedActorRequest : public TActorBootstrapped<THttpMonAuthori
11901190
return ReplyErrorAndPassAway(result);
11911191
}
11921192
if (IsTokenAllowed(result.UserToken.Get(), Fields.AllowedSIDs)) {
1193-
SendRequest(result);
1193+
SendRequest(&result);
11941194
} else {
11951195
return ReplyForbiddenAndPassAway("SID is not allowed");
11961196
}
@@ -1204,8 +1204,17 @@ class THttpMonAuthorizedActorRequest : public TActorBootstrapped<THttpMonAuthori
12041204
}
12051205

12061206
void Handle(NHttp::TEvHttpProxy::TEvHttpOutgoingDataChunk::TPtr& ev) {
1207-
Send(Event->Sender, new NHttp::TEvHttpProxy::TEvHttpOutgoingDataChunk(ev->Get()->DataChunk), 0, Event->Cookie);
1208-
if (ev->Get()->DataChunk && ev->Get()->DataChunk->IsEndOfData()) {
1207+
bool endOfData = false;
1208+
if (ev->Get()->DataChunk) {
1209+
Send(Event->Sender, new NHttp::TEvHttpProxy::TEvHttpOutgoingDataChunk(ev->Get()->DataChunk), 0, Event->Cookie);
1210+
if (ev->Get()->DataChunk->IsEndOfData()) {
1211+
endOfData = true;
1212+
}
1213+
} else if (ev->Get()->Error) {
1214+
Send(Event->Sender, new NHttp::TEvHttpProxy::TEvHttpOutgoingDataChunk(ev->Get()->Error), 0, Event->Cookie);
1215+
endOfData = true;
1216+
}
1217+
if (endOfData) {
12091218
PassAway();
12101219
}
12111220
}
@@ -1225,7 +1234,7 @@ class THttpMonAuthorizedActorRequest : public TActorBootstrapped<THttpMonAuthori
12251234
hFunc(NHttp::TEvHttpProxy::TEvHttpOutgoingResponse, Handle);
12261235
hFunc(NHttp::TEvHttpProxy::TEvHttpOutgoingDataChunk, Handle);
12271236
hFunc(NHttp::TEvHttpProxy::TEvSubscribeForCancel, Handle);
1228-
hFunc(NHttp::TEvHttpProxy::TEvRequestCancelled, Handle)
1237+
hFunc(NHttp::TEvHttpProxy::TEvRequestCancelled, Handle);
12291238
}
12301239
}
12311240
};

0 commit comments

Comments
 (0)