diff --git a/ydb/core/fq/libs/compute/ydb/events/events.h b/ydb/core/fq/libs/compute/ydb/events/events.h index d6b1d4ffc6f8..80b7c55a2fd3 100644 --- a/ydb/core/fq/libs/compute/ydb/events/events.h +++ b/ydb/core/fq/libs/compute/ydb/events/events.h @@ -127,14 +127,14 @@ struct TEvYdbCompute { , Ready(ready) {} - TEvGetOperationResponse(NYdb::NQuery::EExecStatus execStatus, Ydb::StatusIds::StatusCode statusCode, const TVector& resultSetsMeta, const Ydb::TableStats::QueryStats& queryStats, NYql::TIssues issues) + TEvGetOperationResponse(NYdb::NQuery::EExecStatus execStatus, Ydb::StatusIds::StatusCode statusCode, const TVector& resultSetsMeta, const Ydb::TableStats::QueryStats& queryStats, NYql::TIssues issues, bool ready = true) : ExecStatus(execStatus) , StatusCode(statusCode) , ResultSetsMeta(resultSetsMeta) , QueryStats(queryStats) , Issues(std::move(issues)) , Status(NYdb::EStatus::SUCCESS) - , Ready(true) + , Ready(ready) {} NYdb::NQuery::EExecStatus ExecStatus = NYdb::NQuery::EExecStatus::Unspecified; diff --git a/ydb/core/fq/libs/compute/ydb/status_tracker_actor.cpp b/ydb/core/fq/libs/compute/ydb/status_tracker_actor.cpp index 6b5c7584d03d..c27323eb5748 100644 --- a/ydb/core/fq/libs/compute/ydb/status_tracker_actor.cpp +++ b/ydb/core/fq/libs/compute/ydb/status_tracker_actor.cpp @@ -123,12 +123,6 @@ class TStatusTrackerActor : public TBaseComputeActor { void Handle(const TEvYdbCompute::TEvGetOperationResponse::TPtr& ev) { const auto& response = *ev.Get()->Get(); - if (response.Status == NYdb::EStatus::SUCCESS && !response.Ready) { - LOG_D("GetOperation IS NOT READY, repeating"); - SendGetOperation(TDuration::MilliSeconds(BackoffTimer.NextBackoffMs())); - return; - } - if (response.Status == NYdb::EStatus::NOT_FOUND) { // FAILING / ABORTING_BY_USER / ABORTING_BY_SYSTEM LOG_I("Operation has been already removed"); Send(Parent, new TEvYdbCompute::TEvStatusTrackerResponse(response.Issues, response.Status, ExecStatus, ComputeStatus)); diff --git a/ydb/core/fq/libs/compute/ydb/ydb_connector_actor.cpp b/ydb/core/fq/libs/compute/ydb/ydb_connector_actor.cpp index 60315478fcf8..11c6bcdc51cb 100644 --- a/ydb/core/fq/libs/compute/ydb/ydb_connector_actor.cpp +++ b/ydb/core/fq/libs/compute/ydb/ydb_connector_actor.cpp @@ -93,17 +93,17 @@ class TYdbConnectorActor : public NActors::TActorBootstrappedSender, cookie = ev->Cookie, database = ComputeConnection.database()](auto future) { try { auto response = future.ExtractValueSync(); - if (!response.Ready()) { + if (response.Id().GetKind() != Ydb::TOperationId::UNUSED) { actorSystem->Send( - recipient, - MakeResponse( - database, - response.Status().GetIssues(), - response.Status().GetStatus(), - false), + recipient, + new TEvYdbCompute::TEvGetOperationResponse( + response.Metadata().ExecStatus, + static_cast(response.Status().GetStatus()), + response.Metadata().ResultSetsMeta, + response.Metadata().ExecStats, + RemoveDatabaseFromIssues(response.Status().GetIssues(), database), + response.Ready()), 0, cookie); - } else if (response.Id().GetKind() != Ydb::TOperationId::UNUSED) { - actorSystem->Send(recipient, new TEvYdbCompute::TEvGetOperationResponse(response.Metadata().ExecStatus, static_cast(response.Status().GetStatus()), response.Metadata().ResultSetsMeta, response.Metadata().ExecStats, RemoveDatabaseFromIssues(response.Status().GetIssues(), database)), 0, cookie); } else { actorSystem->Send( recipient, diff --git a/ydb/core/kqp/proxy_service/kqp_script_executions.cpp b/ydb/core/kqp/proxy_service/kqp_script_executions.cpp index de7d3d6844a7..a2abb043fc36 100644 --- a/ydb/core/kqp/proxy_service/kqp_script_executions.cpp +++ b/ydb/core/kqp/proxy_service/kqp_script_executions.cpp @@ -1279,6 +1279,7 @@ class TGetScriptExecutionOperationActor : public TCheckLeaseStatusActorBase { Response->Get()->Ready = false; Response->Get()->Status = Ydb::StatusIds::SUCCESS; Response->Get()->Issues.Clear(); + Response->Get()->Metadata.set_exec_status(Ydb::Query::ExecStatus::EXEC_STATUS_UNSPECIFIED); } else { Response->Get()->Ready = true; Response->Get()->Status = GetOperationStatus();