Skip to content

Commit 1200d8e

Browse files
committed
Recovery: RecoveryState.File.toXContent reports file length as recovered bytes
Closes #10310
1 parent fd3b01d commit 1200d8e

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
641641
builder.field(Fields.NAME, name);
642642
builder.byteSizeField(Fields.LENGTH_IN_BYTES, Fields.LENGTH, length);
643643
builder.field(Fields.REUSED, reused);
644-
builder.byteSizeField(Fields.RECOVERED_IN_BYTES, Fields.RECOVERED, length);
644+
builder.byteSizeField(Fields.RECOVERED_IN_BYTES, Fields.RECOVERED, recovered);
645645
builder.endObject();
646646
return builder;
647647
}

src/test/java/org/elasticsearch/gateway/RecoveryBackwardsCompatibilityTests.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@
2727
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
2828
import org.elasticsearch.common.settings.ImmutableSettings;
2929
import org.elasticsearch.common.settings.Settings;
30+
import org.elasticsearch.common.xcontent.ToXContent;
31+
import org.elasticsearch.common.xcontent.XContentHelper;
3032
import org.elasticsearch.indices.recovery.RecoveryState;
3133
import org.elasticsearch.test.ElasticsearchBackwardsCompatIntegrationTest;
3234
import org.elasticsearch.test.ElasticsearchIntegrationTest;
3335
import org.junit.Test;
3436

37+
import java.util.HashMap;
38+
3539
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
3640
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
3741
import static org.hamcrest.Matchers.equalTo;
@@ -96,19 +100,23 @@ public void testReusePeerRecovery() throws Exception {
96100
assertHitCount(countResponse, numDocs);
97101

98102
RecoveryResponse recoveryResponse = client().admin().indices().prepareRecoveries("test").setDetailed(true).get();
103+
HashMap<String, String> map = new HashMap<>();
104+
map.put("details", "true");
105+
final ToXContent.Params params = new ToXContent.MapParams(map);
99106
for (ShardRecoveryResponse response : recoveryResponse.shardResponses().get("test")) {
100107
RecoveryState recoveryState = response.recoveryState();
108+
final String recoverStateAsJSON = XContentHelper.toString(recoveryState, params);
101109
if (!recoveryState.getPrimary()) {
102110
RecoveryState.Index index = recoveryState.getIndex();
103-
assertThat(index.toString(), index.recoveredBytes(), equalTo(0l));
104-
assertThat(index.toString(), index.reusedBytes(), greaterThan(0l));
105-
assertThat(index.toString(), index.reusedBytes(), equalTo(index.totalBytes()));
106-
assertThat(index.toString(), index.recoveredFileCount(), equalTo(0));
107-
assertThat(index.toString(), index.reusedFileCount(), equalTo(index.totalFileCount()));
108-
assertThat(index.toString(), index.reusedFileCount(), greaterThan(0));
109-
assertThat(index.toString(), index.recoveredBytesPercent(), equalTo(100.f));
110-
assertThat(index.toString(), index.recoveredFilesPercent(), equalTo(100.f));
111-
assertThat(index.toString(), index.reusedBytes(), greaterThan(index.recoveredBytes()));
111+
assertThat(recoverStateAsJSON, index.recoveredBytes(), equalTo(0l));
112+
assertThat(recoverStateAsJSON, index.reusedBytes(), greaterThan(0l));
113+
assertThat(recoverStateAsJSON, index.reusedBytes(), equalTo(index.totalBytes()));
114+
assertThat(recoverStateAsJSON, index.recoveredFileCount(), equalTo(0));
115+
assertThat(recoverStateAsJSON, index.reusedFileCount(), equalTo(index.totalFileCount()));
116+
assertThat(recoverStateAsJSON, index.reusedFileCount(), greaterThan(0));
117+
assertThat(recoverStateAsJSON, index.recoveredBytesPercent(), equalTo(100.f));
118+
assertThat(recoverStateAsJSON, index.recoveredFilesPercent(), equalTo(100.f));
119+
assertThat(recoverStateAsJSON, index.reusedBytes(), greaterThan(index.recoveredBytes()));
112120
// TODO upgrade via optimize?
113121
}
114122
}

0 commit comments

Comments
 (0)