|
@@ -965,6 +965,7 @@ public:
|
|
|
message = ErrorText;
|
|
|
}
|
|
|
Issues.AddIssues(BuildIssues(HttpResponseCode, errorCode, message));
|
|
|
+ FatalCode = StatusFromS3ErrorCode(errorCode);
|
|
|
}
|
|
|
|
|
|
if (ev->Get()->Issues) {
|
|
@@ -1115,7 +1116,7 @@ private:
|
|
|
DecompressorActorId = Register(CreateS3DecompressorActor(SelfActorId, ReadSpec->Compression));
|
|
|
}
|
|
|
|
|
|
- NYql::NDqProto::StatusIds::StatusCode fatalCode = NYql::NDqProto::StatusIds::EXTERNAL_ERROR;
|
|
|
+ FatalCode = NYql::NDqProto::StatusIds::EXTERNAL_ERROR;
|
|
|
|
|
|
StartCycleCount = GetCycleCountFast();
|
|
|
|
|
@@ -1123,7 +1124,7 @@ private:
|
|
|
if (ReadSpec->Arrow) {
|
|
|
if (ReadSpec->Compression) {
|
|
|
Issues.AddIssue(TIssue("Blocks optimisations are incompatible with external compression"));
|
|
|
- fatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
+ FatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
} else {
|
|
|
try {
|
|
|
if (Url.StartsWith("file://")) {
|
|
@@ -1133,7 +1134,7 @@ private:
|
|
|
}
|
|
|
} catch (const parquet::ParquetException& ex) {
|
|
|
Issues.AddIssue(TIssue(ex.what()));
|
|
|
- fatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
+ FatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
RetryStuff->Cancel();
|
|
|
}
|
|
|
}
|
|
@@ -1149,7 +1150,7 @@ private:
|
|
|
LOG_CORO_D("S3 read ERROR");
|
|
|
} catch (const NDB::Exception& ex) {
|
|
|
Issues.AddIssue(TIssue(ex.message()));
|
|
|
- fatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
+ FatalCode = NYql::NDqProto::StatusIds::BAD_REQUEST;
|
|
|
RetryStuff->Cancel();
|
|
|
}
|
|
|
}
|
|
@@ -1162,7 +1163,7 @@ private:
|
|
|
return;
|
|
|
} catch (const std::exception& err) {
|
|
|
Issues.AddIssue(TIssue(err.what()));
|
|
|
- fatalCode = NYql::NDqProto::StatusIds::INTERNAL_ERROR;
|
|
|
+ FatalCode = NYql::NDqProto::StatusIds::INTERNAL_ERROR;
|
|
|
RetryStuff->Cancel();
|
|
|
}
|
|
|
|
|
@@ -1170,7 +1171,7 @@ private:
|
|
|
|
|
|
auto issues = NS3Util::AddParentIssue(TStringBuilder{} << "Error while reading file " << Path, std::move(Issues));
|
|
|
if (issues)
|
|
|
- Send(ComputeActorId, new IDqComputeActorAsyncInput::TEvAsyncInputError(InputIndex, std::move(issues), fatalCode));
|
|
|
+ Send(ComputeActorId, new IDqComputeActorAsyncInput::TEvAsyncInputError(InputIndex, std::move(issues), FatalCode));
|
|
|
else
|
|
|
Send(ParentActorId, new TEvS3Provider::TEvFileFinished(PathIndex, TakeIngressDelta(), TakeCpuTimeDelta(), RetryStuff->SizeLimit));
|
|
|
}
|
|
@@ -1230,6 +1231,7 @@ private:
|
|
|
bool ServerReturnedError = false;
|
|
|
TString ErrorText;
|
|
|
TIssues Issues;
|
|
|
+ NYql::NDqProto::StatusIds::StatusCode FatalCode;
|
|
|
|
|
|
NActors::TActorId DecompressorActorId;
|
|
|
std::size_t LastOffset = 0;
|
|
@@ -1719,7 +1721,7 @@ private:
|
|
|
IssuesFromMessage(result->Get()->Record.GetIssues(), issues);
|
|
|
LOG_W("TS3StreamReadActor", "Error while object listing, details: TEvObjectPathReadError: " << issues.ToOneLineString());
|
|
|
issues = NS3Util::AddParentIssue(TStringBuilder{} << "Error while object listing", std::move(issues));
|
|
|
- Send(ComputeActorId, new TEvAsyncInputError(InputIndex, std::move(issues), NYql::NDqProto::StatusIds::EXTERNAL_ERROR));
|
|
|
+ Send(ComputeActorId, new TEvAsyncInputError(InputIndex, std::move(issues), result->Get()->Record.GetFatalCode()));
|
|
|
}
|
|
|
|
|
|
void HandleRetry(TEvS3Provider::TEvRetryEventFunc::TPtr& retry) {
|