[Logs UI] Avoid CCS-incompatible index name resolution (#70179)
This fixes #70048 by avoiding a CCS-incompatible ES API call when determining the existence of log indices.
This commit is contained in:
parent
8a6a55097d
commit
e70bc81998
|
@ -42,7 +42,7 @@ export type LogIndexField = rt.TypeOf<typeof logIndexFieldRT>;
|
|||
|
||||
const logSourceStatusRT = rt.strict({
|
||||
logIndexFields: rt.array(logIndexFieldRT),
|
||||
logIndexNames: rt.array(rt.string),
|
||||
logIndicesExist: rt.boolean,
|
||||
});
|
||||
|
||||
export type LogSourceStatus = rt.TypeOf<typeof logSourceStatusRT>;
|
||||
|
|
|
@ -78,11 +78,6 @@ export const useLogSource = ({
|
|||
[sourceId, fetch]
|
||||
);
|
||||
|
||||
/* eslint-disable-next-line react-hooks/exhaustive-deps */
|
||||
const logIndicesExist = useMemo(() => (sourceStatus?.logIndexNames?.length ?? 0) > 0, [
|
||||
sourceStatus,
|
||||
]);
|
||||
|
||||
const derivedIndexPattern = useMemo(
|
||||
() => ({
|
||||
fields: sourceStatus?.logIndexFields ?? [],
|
||||
|
@ -160,7 +155,6 @@ export const useLogSource = ({
|
|||
loadSourceFailureMessage,
|
||||
loadSourceConfiguration,
|
||||
loadSourceStatus,
|
||||
logIndicesExist,
|
||||
sourceConfiguration,
|
||||
sourceId,
|
||||
sourceStatus,
|
||||
|
|
|
@ -18,14 +18,14 @@ export const StreamPageContent: React.FunctionComponent = () => {
|
|||
isUninitialized,
|
||||
loadSource,
|
||||
loadSourceFailureMessage,
|
||||
logIndicesExist,
|
||||
sourceStatus,
|
||||
} = useLogSourceContext();
|
||||
|
||||
if (isLoading || isUninitialized) {
|
||||
return <SourceLoadingPage />;
|
||||
} else if (hasFailedLoadingSource) {
|
||||
return <SourceErrorPage errorMessage={loadSourceFailureMessage ?? ''} retry={loadSource} />;
|
||||
} else if (logIndicesExist) {
|
||||
} else if (sourceStatus?.logIndicesExist) {
|
||||
return <LogsPageLogsContent />;
|
||||
} else {
|
||||
return <LogsPageNoIndicesContent />;
|
||||
|
|
|
@ -104,10 +104,10 @@ const LogHighlightsStateProvider: React.FC = ({ children }) => {
|
|||
};
|
||||
|
||||
export const LogsPageProviders: React.FunctionComponent = ({ children }) => {
|
||||
const { logIndicesExist } = useLogSourceContext();
|
||||
const { sourceStatus } = useLogSourceContext();
|
||||
|
||||
// The providers assume the source is loaded, so short-circuit them otherwise
|
||||
if (!logIndicesExist) {
|
||||
if (!sourceStatus?.logIndicesExist) {
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,17 +31,16 @@ export const initLogSourceStatusRoutes = ({
|
|||
const { sourceId } = request.params;
|
||||
|
||||
try {
|
||||
const logIndexNames = await sourceStatus.getLogIndexNames(requestContext, sourceId);
|
||||
const logIndexFields =
|
||||
logIndexNames.length > 0
|
||||
? await fields.getFields(requestContext, sourceId, InfraIndexType.LOGS)
|
||||
: [];
|
||||
const logIndicesExist = await sourceStatus.hasLogIndices(requestContext, sourceId);
|
||||
const logIndexFields = logIndicesExist
|
||||
? await fields.getFields(requestContext, sourceId, InfraIndexType.LOGS)
|
||||
: [];
|
||||
|
||||
return response.ok({
|
||||
body: getLogSourceStatusSuccessResponsePayloadRT.encode({
|
||||
data: {
|
||||
logIndicesExist,
|
||||
logIndexFields,
|
||||
logIndexNames,
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue