Skip to content

Commit dec6a17

Browse files
[Data Streams] Fix displayed index mode (#215683)
Fixes #208671 ## Summary Before this PR, the displayed index mode of the data streams was determined based on the index mode of the associated index template. However, the index mode can also be set through the component template, so that logic is not reliable and can cause incorrectly displayed index mode like described in #208671. In this PR, we replace this logic with the recently added `index_mode` field to the Es Get Data Streams API (see elastic/elasticsearch#122486). **How to test:** 1. Create a component template with a LogsDB index mode (you can also test with other index modes): ``` PUT _component_template/my-component-template { "template": { "settings": { "index": { "mode": "logsdb" } } } } ``` 2. Create an index template that is composed of the component template above: ``` PUT _index_template/my-index-template { "index_patterns": [ "my-ds-*" ], "data_stream": {}, "composed_of": [ "my-component-template" ] } ``` 3. Create a data stream that matched the index pattern from the index template above: ``` PUT _data_stream/my-ds-1 ``` 4. Go to the data streams table and verify that the index mode is displayed correctly in the table. <img width="1165" alt="Screenshot 2025-03-24 at 18 12 04" src="https://github.com/user-attachments/assets/ea211c14-3d03-49c7-ace7-88b15e294d1f" /> 5. Click on the created data stream and verify that the displayed index mode in the details panel is correct: <img width="1165" alt="Screenshot 2025-03-06 at 14 36 12" src="https://github.com/user-attachments/assets/954864e2-ae2a-4cb8-9eef-2c5f8b417f52" /> --------- Co-authored-by: Elastic Machine <[email protected]>
1 parent 937dbba commit dec6a17

File tree

3 files changed

+18
-34
lines changed

3 files changed

+18
-34
lines changed

x-pack/platform/plugins/shared/index_management/server/routes/api/data_streams/register_get_route.ts

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { IScopedClusterClient } from '@kbn/core/server';
1111
import {
1212
IndicesDataStream,
1313
IndicesDataStreamsStatsDataStreamsStatsItem,
14-
IndicesGetIndexTemplateIndexTemplateItem,
1514
SecurityHasPrivilegesResponse,
1615
} from '@elastic/elasticsearch/lib/api/types';
1716
import type { MeteringStats } from '../../../lib/types';
@@ -32,14 +31,12 @@ const enhanceDataStreams = ({
3231
meteringStats,
3332
dataStreamsPrivileges,
3433
globalMaxRetention,
35-
indexTemplates,
3634
}: {
3735
dataStreams: IndicesDataStream[];
3836
dataStreamsStats?: IndicesDataStreamsStatsDataStreamsStatsItem[];
3937
meteringStats?: MeteringStats[];
4038
dataStreamsPrivileges?: SecurityHasPrivilegesResponse;
4139
globalMaxRetention?: string;
42-
indexTemplates?: IndicesGetIndexTemplateIndexTemplateItem[];
4340
}): EnhancedDataStreamFromEs[] => {
4441
return dataStreams.map((dataStream) => {
4542
const enhancedDataStream: EnhancedDataStreamFromEs = {
@@ -74,16 +71,6 @@ const enhanceDataStreams = ({
7471
}
7572
}
7673

77-
if (indexTemplates) {
78-
const indexTemplate = indexTemplates.find(
79-
(template) => template.name === dataStream.template
80-
);
81-
if (indexTemplate) {
82-
enhancedDataStream.index_mode =
83-
indexTemplate.index_template?.template?.settings?.index?.mode;
84-
}
85-
}
86-
8774
return enhancedDataStream;
8875
});
8976
};
@@ -172,9 +159,6 @@ export function registerGetAllRoute({ router, lib: { handleEsError }, config }:
172159
);
173160
}
174161

175-
const { index_templates: indexTemplates } =
176-
await client.asCurrentUser.indices.getIndexTemplate();
177-
178162
const { persistent, defaults } = await client.asInternalUser.cluster.getSettings({
179163
include_defaults: true,
180164
});
@@ -192,7 +176,6 @@ export function registerGetAllRoute({ router, lib: { handleEsError }, config }:
192176
meteringStats,
193177
dataStreamsPrivileges,
194178
globalMaxRetention,
195-
indexTemplates,
196179
});
197180

198181
return response.ok({
@@ -243,30 +226,17 @@ export function registerGetOneRoute({ router, lib: { handleEsError }, config }:
243226

244227
if (dataStreams[0]) {
245228
let dataStreamsPrivileges;
246-
let indexTemplates;
247229

248230
if (config.isSecurityEnabled()) {
249231
dataStreamsPrivileges = await getDataStreamsPrivileges(client, [dataStreams[0].name]);
250232
}
251233

252-
if (dataStreams[0].template) {
253-
const { index_templates: templates } =
254-
await client.asCurrentUser.indices.getIndexTemplate({
255-
name: dataStreams[0].template,
256-
});
257-
258-
if (templates) {
259-
indexTemplates = templates;
260-
}
261-
}
262-
263234
const enhancedDataStreams = enhanceDataStreams({
264235
dataStreams,
265236
dataStreamsStats,
266237
meteringStats,
267238
dataStreamsPrivileges,
268239
globalMaxRetention,
269-
indexTemplates,
270240
});
271241

272242
const { persistent, defaults } = await client.asInternalUser.cluster.getSettings({

x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
287287
expect(await testSubjects.getVisibleText('indexModeValue')).to.be(indexModeName);
288288
await testSubjects.click('closeDetailsButton');
289289

290+
// Perform rollover so that index mode of data stream is updated
291+
await es.indices.rollover({
292+
alias: TEST_DS_NAME,
293+
});
294+
290295
// Navigate to the data streams tab
291296
await pageObjects.indexManagement.changeTabs('data_streamsTab');
292297
await pageObjects.header.waitUntilLoadingHasFinished();
@@ -342,7 +347,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
342347
await verifyModeHasBeenChanged(INDEX_MODE.STANDARD);
343348
});
344349

345-
it('allows to upgrade data stream from time series to logsdb index mode', async () => {
350+
// Fails because of https://github.com/elastic/elasticsearch/issues/126473
351+
it.skip('allows to upgrade data stream from time series to logsdb index mode', async () => {
346352
await setIndexModeTemplate({
347353
mode: 'time_series',
348354
routing_path: 'test',
@@ -364,7 +370,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
364370
await verifyModeHasBeenChanged(INDEX_MODE.LOGSDB);
365371
});
366372

367-
it('allows to downgrade data stream from logsdb to time series index mode', async () => {
373+
// Fails because of https://github.com/elastic/elasticsearch/issues/126473
374+
it.skip('allows to downgrade data stream from logsdb to time series index mode', async () => {
368375
await setIndexModeTemplate({
369376
mode: 'logsdb',
370377
});

x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
205205
expect(await testSubjects.getVisibleText('indexModeValue')).to.be(indexModeName);
206206
await testSubjects.click('closeDetailsButton');
207207

208+
// Perform rollover so that index mode of data stream is updated
209+
await es.indices.rollover({
210+
alias: TEST_DS_NAME_INDEX_MODE,
211+
});
212+
208213
// Navigate to the data streams tab
209214
await pageObjects.indexManagement.changeTabs('data_streamsTab');
210215
await pageObjects.header.waitUntilLoadingHasFinished();
@@ -267,7 +272,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
267272
await verifyModeHasBeenChanged(INDEX_MODE.STANDARD);
268273
});
269274

270-
it('allows to upgrade data stream from time series to logsdb index mode', async () => {
275+
// Fails because of https://github.com/elastic/elasticsearch/issues/126473
276+
it.skip('allows to upgrade data stream from time series to logsdb index mode', async () => {
271277
await setIndexModeTemplate({
272278
mode: 'time_series',
273279
routing_path: 'test',
@@ -288,7 +294,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
288294
await verifyModeHasBeenChanged(INDEX_MODE.LOGSDB);
289295
});
290296

291-
it('allows to downgrade data stream from logsdb to time series index mode', async () => {
297+
// Fails because of https://github.com/elastic/elasticsearch/issues/126473
298+
it.skip('allows to downgrade data stream from logsdb to time series index mode', async () => {
292299
await setIndexModeTemplate({
293300
mode: 'logsdb',
294301
});

0 commit comments

Comments
 (0)