Skip to content

Commit 32cedcd

Browse files
committed
Added checks to ensure backward compatibility.
Signed-off-by: Ketan Verma <ketan9495@gmail.com>
1 parent d9b2521 commit 32cedcd

File tree

2 files changed

+70
-2
lines changed

2 files changed

+70
-2
lines changed

server/src/main/java/org/opensearch/cluster/metadata/ComposableIndexTemplate.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
package org.opensearch.cluster.metadata;
3434

3535
import org.opensearch.LegacyESVersion;
36+
import org.opensearch.Version;
3637
import org.opensearch.cluster.AbstractDiffable;
3738
import org.opensearch.cluster.Diff;
3839
import org.opensearch.cluster.metadata.DataStream.TimestampField;
@@ -289,7 +290,11 @@ public DataStreamTemplate(TimestampField timestampField) {
289290
}
290291

291292
public DataStreamTemplate(StreamInput in) throws IOException {
292-
this.timestampField = in.readOptionalWriteable(TimestampField::new);
293+
if (in.getVersion().onOrAfter(Version.V_1_0_0)) {
294+
this.timestampField = in.readOptionalWriteable(TimestampField::new);
295+
} else {
296+
this.timestampField = DataStreamFieldMapper.Defaults.TIMESTAMP_FIELD;
297+
}
293298
}
294299

295300
public TimestampField getTimestampField() {
@@ -312,7 +317,9 @@ MapperService.SINGLE_MAPPING_NAME, singletonMap(
312317

313318
@Override
314319
public void writeTo(StreamOutput out) throws IOException {
315-
out.writeOptionalWriteable(timestampField);
320+
if (out.getVersion().onOrAfter(Version.V_1_0_0)) {
321+
out.writeOptionalWriteable(timestampField);
322+
}
316323
}
317324

318325
@Override
@@ -323,6 +330,10 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
323330
.endObject();
324331
}
325332

333+
public static DataStreamTemplate fromXContent(XContentParser parser) {
334+
return PARSER.apply(parser, null);
335+
}
336+
326337
@Override
327338
public boolean equals(Object o) {
328339
if (this == o) return true;
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.cluster.metadata;
10+
11+
import org.opensearch.Version;
12+
import org.opensearch.cluster.metadata.ComposableIndexTemplate.DataStreamTemplate;
13+
import org.opensearch.common.io.stream.BytesStreamOutput;
14+
import org.opensearch.common.io.stream.StreamInput;
15+
import org.opensearch.common.io.stream.Writeable;
16+
import org.opensearch.common.xcontent.XContentParser;
17+
import org.opensearch.test.AbstractSerializingTestCase;
18+
import org.opensearch.test.VersionUtils;
19+
20+
import java.io.IOException;
21+
22+
import static org.hamcrest.Matchers.equalTo;
23+
24+
public class DataStreamTemplateTests extends AbstractSerializingTestCase<DataStreamTemplate> {
25+
26+
@Override
27+
protected DataStreamTemplate doParseInstance(XContentParser parser) throws IOException {
28+
return DataStreamTemplate.fromXContent(parser);
29+
}
30+
31+
@Override
32+
protected Writeable.Reader<DataStreamTemplate> instanceReader() {
33+
return DataStreamTemplate::new;
34+
}
35+
36+
@Override
37+
protected DataStreamTemplate createTestInstance() {
38+
return new DataStreamTemplate(new DataStream.TimestampField("timestamp_" + randomAlphaOfLength(5)));
39+
}
40+
41+
public void testBackwardCompatibleSerialization() throws Exception {
42+
Version version = VersionUtils.getPreviousVersion(Version.V_1_0_0);
43+
BytesStreamOutput out = new BytesStreamOutput();
44+
out.setVersion(version);
45+
46+
DataStreamTemplate outTemplate = new DataStreamTemplate();
47+
outTemplate.writeTo(out);
48+
assertThat(out.size(), equalTo(0));
49+
50+
StreamInput in = out.bytes().streamInput();
51+
in.setVersion(version);
52+
DataStreamTemplate inTemplate = new DataStreamTemplate(in);
53+
54+
assertThat(inTemplate, equalTo(outTemplate));
55+
}
56+
57+
}

0 commit comments

Comments
 (0)