[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:
Felix Stürmer 2020-07-01 14:05:29 +02:00 committed by GitHub
parent 8a6a55097d
commit e70bc81998
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 10 additions and 17 deletions

View file

@ -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>;

View file

@ -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,

View file

@ -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 />;

View file

@ -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}</>;
}

View file

@ -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,
},
}),
});