@@ -500,6 +500,8 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
500
500
failedOnAlreadyExists = ev->Record .GetTransaction ().GetModifyScheme ().GetFailedOnAlreadyExists ();
501
501
}
502
502
503
+ const auto operationType = ev->Record .GetTransaction ().GetModifyScheme ().GetOperationType ();
504
+
503
505
IActor* requestHandler = new TSchemeOpRequestHandler (
504
506
ev.Release (),
505
507
promise,
@@ -510,9 +512,19 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
510
512
511
513
auto actorSystem = TActivationContext::ActorSystem ();
512
514
auto selfId = SelfId ();
513
- promise.GetFuture ().Subscribe ([actorSystem, selfId](const TFuture<IKqpGateway::TGenericResult>& future) {
515
+ promise.GetFuture ().Subscribe ([actorSystem, selfId, operationType](const TFuture<IKqpGateway::TGenericResult>& future) {
516
+ const auto & value = future.GetValue ();
514
517
auto ev = MakeHolder<TEvPrivate::TEvResult>();
515
- ev->Result = future.GetValue ();
518
+ ev->Result .SetStatus (value.Status ());
519
+
520
+ if (value.Issues ()) {
521
+ NYql::TIssue rootIssue (TStringBuilder () << " Executing " << NKikimrSchemeOp::EOperationType_Name (operationType));
522
+ rootIssue.SetCode (ev->Result .Status (), NYql::TSeverityIds::S_INFO);
523
+ for (const auto & issue : value.Issues ()) {
524
+ rootIssue.AddSubIssue (MakeIntrusive<NYql::TIssue>(issue));
525
+ }
526
+ ev->Result .AddIssue (rootIssue);
527
+ }
516
528
517
529
actorSystem->Send (selfId, ev.Release ());
518
530
});
@@ -546,15 +558,20 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
546
558
auto resultFuture = cBehaviour->GetOperationsManager ()->ExecutePrepared (schemeOp, SelfId ().NodeId (), cBehaviour, context);
547
559
548
560
using TResultFuture = NThreading::TFuture<NMetadata::NModifications::IOperationsManager::TYqlConclusionStatus>;
549
- resultFuture.Subscribe ([actorSystem, selfId](const TResultFuture& f) {
561
+ resultFuture.Subscribe ([actorSystem, selfId, objectType = schemeOp. GetObjectType () ](const TResultFuture& f) {
550
562
const auto & status = f.GetValue ();
551
563
auto ev = MakeHolder<TEvPrivate::TEvResult>();
552
564
if (status.Ok ()) {
553
565
ev->Result .SetSuccess ();
554
566
} else {
555
567
ev->Result .SetStatus (status.GetStatus ());
556
568
if (TString message = status.GetErrorMessage ()) {
557
- ev->Result .AddIssue (NYql::TIssue (message).SetCode (status.GetStatus (), NYql::TSeverityIds::S_ERROR));
569
+ const auto createIssue = [status = status.GetStatus ()](const TString& message) {
570
+ return NYql::TIssue (message).SetCode (status, NYql::TSeverityIds::S_ERROR);
571
+ };
572
+ ev->Result .AddIssue (createIssue (TStringBuilder () << " Executing operation with object \" " << objectType << " \" " )
573
+ .AddSubIssue (MakeIntrusive<NYql::TIssue>(createIssue (status.GetErrorMessage ())))
574
+ );
558
575
}
559
576
}
560
577
actorSystem->Send (selfId, ev.Release ());
0 commit comments