Only write forced_refresh if we forced a refresh

Otherwise it just adds noise to the response.

Closes #19629
This commit is contained in:
Nik Everett 2016-07-28 14:00:17 -04:00
parent efa37b8b7d
commit bdebd02d8c
3 changed files with 46 additions and 6 deletions

View File

@ -219,8 +219,10 @@ public abstract class DocWriteResponse extends ReplicationResponse implements Wr
.field("_type", type) .field("_type", type)
.field("_id", id) .field("_id", id)
.field("_version", version) .field("_version", version)
.field("_operation", getOperation().getLowercase()) .field("_operation", getOperation().getLowercase());
.field("forced_refresh", forcedRefresh); if (forcedRefresh) {
builder.field("forced_refresh", forcedRefresh);
}
shardInfo.toXContent(builder, params); shardInfo.toXContent(builder, params);
return builder; return builder;
} }

View File

@ -20,9 +20,20 @@
package org.elasticsearch.action; package org.elasticsearch.action;
import org.elasticsearch.action.DocWriteResponse.Operation; import org.elasticsearch.action.DocWriteResponse.Operation;
import org.elasticsearch.action.support.replication.ReplicationResponse.ShardInfo;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.common.xcontent.json.JsonXContent;
import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.shard.ShardId;
import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.ESTestCase;
import java.io.IOException;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.hasKey;
import static org.hamcrest.Matchers.not;
public class DocWriteResponseTests extends ESTestCase { public class DocWriteResponseTests extends ESTestCase {
public void testGetLocation() { public void testGetLocation() {
DocWriteResponse response = new DocWriteResponse(new ShardId("index", "uuid", 0), "type", "id", 0, Operation.CREATE) { DocWriteResponse response = new DocWriteResponse(new ShardId("index", "uuid", 0), "type", "id", 0, Operation.CREATE) {
@ -31,4 +42,33 @@ public class DocWriteResponseTests extends ESTestCase {
assertEquals("/index/type/id", response.getLocation(null)); assertEquals("/index/type/id", response.getLocation(null));
assertEquals("/index/type/id?routing=test_routing", response.getLocation("test_routing")); assertEquals("/index/type/id?routing=test_routing", response.getLocation("test_routing"));
} }
/**
* Tests that {@link DocWriteResponse#toXContent(XContentBuilder, ToXContent.Params)} doesn't include {@code forced_refresh} unless it
* is true. We can't assert this in the yaml tests because "not found" is also "false" there....
*/
public void testToXContentDoesntIncludeForcedRefreshUnlessForced() throws IOException {
DocWriteResponse response = new DocWriteResponse(new ShardId("index", "uuid", 0), "type", "id", 0, Operation.CREATE) {
// DocWriteResponse is abstract so we have to sneak a subclass in here to test it.
};
response.setShardInfo(new ShardInfo(1, 1));
response.setForcedRefresh(false);
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
builder.startObject();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
builder.endObject();
try (XContentParser parser = JsonXContent.jsonXContent.createParser(builder.bytes())) {
assertThat(parser.map(), not(hasKey("forced_refresh")));
}
}
response.setForcedRefresh(true);
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
builder.startObject();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
builder.endObject();
try (XContentParser parser = JsonXContent.jsonXContent.createParser(builder.bytes())) {
assertThat(parser.map(), hasEntry("forced_refresh", true));
}
}
}
} }

View File

@ -31,8 +31,7 @@ The result of the above index operation is:
"_id" : "1", "_id" : "1",
"_version" : 1, "_version" : 1,
"created" : true, "created" : true,
"_operation" : create, "_operation" : create
"forced_refresh": false
} }
-------------------------------------------------- --------------------------------------------------
// TESTRESPONSE[s/"successful" : 2/"successful" : 1/] // TESTRESPONSE[s/"successful" : 2/"successful" : 1/]
@ -232,8 +231,7 @@ The result of the above index operation is:
"_id" : "6a8ca01c-7896-48e9-81cc-9f70661fcb32", "_id" : "6a8ca01c-7896-48e9-81cc-9f70661fcb32",
"_version" : 1, "_version" : 1,
"created" : true, "created" : true,
"_operation": "create", "_operation": "create"
"forced_refresh": false
} }
-------------------------------------------------- --------------------------------------------------
// TESTRESPONSE[s/6a8ca01c-7896-48e9-81cc-9f70661fcb32/$body._id/ s/"successful" : 2/"successful" : 1/] // TESTRESPONSE[s/6a8ca01c-7896-48e9-81cc-9f70661fcb32/$body._id/ s/"successful" : 2/"successful" : 1/]