diff --git a/ydb/core/viewer/json_autocomplete.h b/ydb/core/viewer/json_autocomplete.h index 480f6ccb5321..7375bee3d1c8 100644 --- a/ydb/core/viewer/json_autocomplete.h +++ b/ydb/core/viewer/json_autocomplete.h @@ -425,7 +425,12 @@ class TJsonAutocomplete : public TViewerPipeClient { } void Handle(TEvViewer::TEvViewerResponse::TPtr& ev) { - ProxyResult = ev.Release()->Release(); + if (ev.Get()->Get()->Record.HasAutocompleteResponse()) { + ProxyResult = ev.Release()->Release(); + } else { + Direct = true; + SendSchemeCacheRequest(); // fallback + } RequestDone(); } diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h index 9024703bed84..4717397a1e30 100644 --- a/ydb/core/viewer/json_query.h +++ b/ydb/core/viewer/json_query.h @@ -420,7 +420,12 @@ class TJsonQuery : public TViewerPipeClient { } void HandleReply(TEvViewer::TEvViewerResponse::TPtr& ev) { - Handle(*(ev.Get()->Get()->Record.MutableQueryResponse())); + auto& record = ev.Get()->Get()->Record; + if (record.HasQueryResponse()) { + Handle(*(ev.Get()->Get()->Record.MutableQueryResponse())); + } else { + SendKpqProxyRequest(); // fallback + } } void HandleReply(NKqp::TEvKqp::TEvAbortExecution::TPtr& ev) { diff --git a/ydb/core/viewer/json_render.h b/ydb/core/viewer/json_render.h index 86fdd26ada93..d03216835922 100644 --- a/ydb/core/viewer/json_render.h +++ b/ydb/core/viewer/json_render.h @@ -254,7 +254,12 @@ class TJsonRender : public TViewerPipeClient { } void Handle(TEvViewer::TEvViewerResponse::TPtr& ev) { - HandleRenderResponse(*(ev.Get()->Get()->Record.MutableRenderResponse())); + auto& record = ev.Get()->Get()->Record; + if (record.HasRenderResponse()) { + HandleRenderResponse(*(record.MutableRenderResponse())); + } else { + SendGraphRequest(); // fallback + } } void HandleTimeout() {