Skip to content

Commit 73bea3a

Browse files
authored
Reinstate ByteSizeValue transport changes (#123060)
1 parent dc4e8f4 commit 73bea3a

File tree

3 files changed

+39
-33
lines changed

3 files changed

+39
-33
lines changed

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ static TransportVersion def(int id) {
182182
public static final TransportVersion REMOVE_DESIRED_NODE_VERSION_90 = def(9_000_0_03);
183183
public static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION_90 = def(9_000_0_04);
184184
public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_9_0 = def(9_000_0_05);
185+
public static final TransportVersion BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_90 = def(9_000_0_06);
185186

186187
/*
187188
* STOP! READ THIS FIRST! No, really,

server/src/main/java/org/elasticsearch/common/unit/ByteSizeValue.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.Objects;
2727

2828
import static org.elasticsearch.TransportVersions.BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1;
29+
import static org.elasticsearch.TransportVersions.BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_90;
2930
import static org.elasticsearch.TransportVersions.REVERT_BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1;
3031
import static org.elasticsearch.common.unit.ByteSizeUnit.BYTES;
3132
import static org.elasticsearch.common.unit.ByteSizeUnit.GB;
@@ -113,8 +114,7 @@ static ByteSizeValue newByteSizeValue(long sizeInBytes, ByteSizeUnit desiredUnit
113114
public static ByteSizeValue readFrom(StreamInput in) throws IOException {
114115
long size = in.readZLong();
115116
ByteSizeUnit unit = ByteSizeUnit.readFrom(in);
116-
TransportVersion tv = in.getTransportVersion();
117-
if (tv.onOrAfter(BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1) && tv.before(REVERT_BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1)) {
117+
if (alwaysUseBytes(in.getTransportVersion())) {
118118
return newByteSizeValue(size, unit);
119119
} else {
120120
return of(size, unit);
@@ -123,15 +123,19 @@ public static ByteSizeValue readFrom(StreamInput in) throws IOException {
123123

124124
@Override
125125
public void writeTo(StreamOutput out) throws IOException {
126-
TransportVersion tv = out.getTransportVersion();
127-
if (tv.onOrAfter(BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1) && tv.before(REVERT_BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1)) {
126+
if (alwaysUseBytes(out.getTransportVersion())) {
128127
out.writeZLong(sizeInBytes);
129128
} else {
130129
out.writeZLong(Math.divideExact(sizeInBytes, desiredUnit.toBytes(1)));
131130
}
132131
desiredUnit.writeTo(out);
133132
}
134133

134+
private static boolean alwaysUseBytes(TransportVersion tv) {
135+
return tv.isPatchFrom(BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_90)
136+
|| tv.between(BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1, REVERT_BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1);
137+
}
138+
135139
ByteSizeValue(long sizeInBytes, ByteSizeUnit desiredUnit) {
136140
this.sizeInBytes = sizeInBytes;
137141
this.desiredUnit = desiredUnit;

server/src/test/java/org/elasticsearch/common/unit/ByteSizeValueTests.java

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import org.elasticsearch.ElasticsearchParseException;
1313
import org.elasticsearch.TransportVersion;
14-
import org.elasticsearch.TransportVersions;
1514
import org.elasticsearch.common.io.stream.BytesStreamOutput;
1615
import org.elasticsearch.common.io.stream.Writeable.Reader;
1716
import org.elasticsearch.test.AbstractWireSerializingTestCase;
@@ -22,6 +21,9 @@
2221
import java.util.List;
2322
import java.util.function.Function;
2423

24+
import static org.elasticsearch.TransportVersions.BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_90;
25+
import static org.elasticsearch.TransportVersions.INITIAL_ELASTICSEARCH_9_0;
26+
import static org.elasticsearch.TransportVersions.V_8_16_0;
2527
import static org.hamcrest.Matchers.containsString;
2628
import static org.hamcrest.Matchers.equalTo;
2729
import static org.hamcrest.Matchers.is;
@@ -520,44 +522,43 @@ protected void assertEqualInstances(ByteSizeValue expectedInstance, ByteSizeValu
520522

521523
public void testBWCTransportFormat() throws IOException {
522524
var tenMegs = ByteSizeValue.ofMb(10);
523-
try (BytesStreamOutput expected = new BytesStreamOutput(); BytesStreamOutput actual = new BytesStreamOutput()) {
524-
expected.writeZLong(10);
525-
ByteSizeUnit.MB.writeTo(expected);
526-
actual.setTransportVersion(TransportVersions.V_8_16_0);
527-
tenMegs.writeTo(actual);
528-
assertArrayEquals(
529-
"Size denominated in the desired unit for backward compatibility",
530-
expected.bytes().array(),
531-
actual.bytes().array()
532-
);
525+
for (var tv : List.of(V_8_16_0, INITIAL_ELASTICSEARCH_9_0)) {
526+
try (BytesStreamOutput expected = new BytesStreamOutput(); BytesStreamOutput actual = new BytesStreamOutput()) {
527+
expected.writeZLong(10);
528+
ByteSizeUnit.MB.writeTo(expected);
529+
actual.setTransportVersion(tv);
530+
tenMegs.writeTo(actual);
531+
assertArrayEquals(
532+
"Size denominated in the desired unit for backward compatibility",
533+
expected.bytes().array(),
534+
actual.bytes().array()
535+
);
536+
}
533537
}
534538
}
535539

536-
/**
537-
* @see TransportVersions#REVERT_BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_1
538-
*/
539-
@AwaitsFix(bugUrl = "https://elasticco.atlassian.net/browse/ES-10585")
540540
public void testTwoDigitTransportRoundTrips() throws IOException {
541-
TransportVersion tv = TransportVersion.current();
542-
for (var desiredUnit : ByteSizeUnit.values()) {
543-
if (desiredUnit == ByteSizeUnit.BYTES) {
544-
continue;
545-
}
546-
checkTransportRoundTrip(ByteSizeValue.parseBytesSizeValue("23" + desiredUnit.getSuffix(), "test"), tv);
547-
for (int tenths = 1; tenths <= 9; tenths++) {
548-
checkTransportRoundTrip(ByteSizeValue.parseBytesSizeValue("23." + tenths + desiredUnit.getSuffix(), "test"), tv);
549-
for (int hundredths = 1; hundredths <= 9; hundredths++) {
550-
checkTransportRoundTrip(
551-
ByteSizeValue.parseBytesSizeValue("23." + tenths + hundredths + desiredUnit.getSuffix(), "test"),
552-
tv
553-
);
541+
for (var tv : List.of(TransportVersion.current(), BYTE_SIZE_VALUE_ALWAYS_USES_BYTES_90)) {
542+
for (var desiredUnit : ByteSizeUnit.values()) {
543+
if (desiredUnit == ByteSizeUnit.BYTES) {
544+
continue;
545+
}
546+
checkTransportRoundTrip(ByteSizeValue.parseBytesSizeValue("23" + desiredUnit.getSuffix(), "test"), tv);
547+
for (int tenths = 1; tenths <= 9; tenths++) {
548+
checkTransportRoundTrip(ByteSizeValue.parseBytesSizeValue("23." + tenths + desiredUnit.getSuffix(), "test"), tv);
549+
for (int hundredths = 1; hundredths <= 9; hundredths++) {
550+
checkTransportRoundTrip(
551+
ByteSizeValue.parseBytesSizeValue("23." + tenths + hundredths + desiredUnit.getSuffix(), "test"),
552+
tv
553+
);
554+
}
554555
}
555556
}
556557
}
557558
}
558559

559560
public void testIntegerTransportRoundTrips() throws IOException {
560-
for (var tv : List.of(TransportVersion.current(), TransportVersions.V_8_16_0)) {
561+
for (var tv : List.of(TransportVersion.current(), V_8_16_0)) {
561562
checkTransportRoundTrip(ByteSizeValue.ONE, tv);
562563
checkTransportRoundTrip(ByteSizeValue.ZERO, tv);
563564
checkTransportRoundTrip(ByteSizeValue.MINUS_ONE, tv);

0 commit comments

Comments
 (0)