|
@@ -8,6 +8,7 @@
|
|
|
|
|
|
package org.elasticsearch.test.errorquery;
|
|
|
|
|
|
+import org.elasticsearch.TransportVersion;
|
|
|
import org.elasticsearch.common.io.stream.StreamInput;
|
|
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
|
|
import org.elasticsearch.common.io.stream.Writeable;
|
|
@@ -29,19 +30,22 @@ import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstr
|
|
|
public class IndexError implements Writeable, ToXContentFragment {
|
|
|
enum ERROR_TYPE {
|
|
|
WARNING,
|
|
|
- EXCEPTION
|
|
|
+ EXCEPTION,
|
|
|
+ NONE
|
|
|
}
|
|
|
|
|
|
private final String indexName;
|
|
|
private final int[] shardIds;
|
|
|
private final ERROR_TYPE errorType;
|
|
|
private final String message;
|
|
|
+ private final int stallTimeSeconds; // how long to wait before returning
|
|
|
|
|
|
- public IndexError(String indexName, int[] shardIds, ERROR_TYPE errorType, String message) {
|
|
|
+ public IndexError(String indexName, int[] shardIds, ERROR_TYPE errorType, String message, int stallTime) {
|
|
|
this.indexName = indexName;
|
|
|
this.shardIds = shardIds;
|
|
|
this.errorType = errorType;
|
|
|
this.message = message;
|
|
|
+ this.stallTimeSeconds = stallTime;
|
|
|
}
|
|
|
|
|
|
public IndexError(StreamInput in) throws IOException {
|
|
@@ -49,6 +53,11 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
this.shardIds = in.readBoolean() ? in.readIntArray() : null;
|
|
|
this.errorType = in.readEnum(ERROR_TYPE.class);
|
|
|
this.message = in.readString();
|
|
|
+ if (in.getTransportVersion().onOrAfter(TransportVersion.V_8_500_051)) {
|
|
|
+ this.stallTimeSeconds = in.readVInt();
|
|
|
+ } else {
|
|
|
+ this.stallTimeSeconds = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -60,6 +69,9 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
}
|
|
|
out.writeEnum(errorType);
|
|
|
out.writeString(message);
|
|
|
+ if (out.getTransportVersion().onOrAfter(TransportVersion.V_8_500_051)) {
|
|
|
+ out.writeVInt(stallTimeSeconds);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public String getIndexName() {
|
|
@@ -79,6 +91,10 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
return message;
|
|
|
}
|
|
|
|
|
|
+ public int getStallTimeSeconds() {
|
|
|
+ return stallTimeSeconds;
|
|
|
+ }
|
|
|
+
|
|
|
@SuppressWarnings("unchecked")
|
|
|
static final ConstructingObjectParser<IndexError, String> PARSER = new ConstructingObjectParser<>(
|
|
|
"index_error",
|
|
@@ -86,11 +102,14 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
(args, name) -> {
|
|
|
List<Integer> lst = (List<Integer>) args[1];
|
|
|
int[] shardIds = lst == null ? null : lst.stream().mapToInt(i -> i).toArray();
|
|
|
+ String message = args[3] == null ? "" : (String) args[3];
|
|
|
+ int stallTime = args[4] == null ? 0 : (int) args[4];
|
|
|
return new IndexError(
|
|
|
(String) args[0],
|
|
|
shardIds,
|
|
|
ERROR_TYPE.valueOf(((String) args[2]).toUpperCase(Locale.ROOT)),
|
|
|
- (String) args[3]
|
|
|
+ message,
|
|
|
+ stallTime
|
|
|
);
|
|
|
}
|
|
|
);
|
|
@@ -99,7 +118,8 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
PARSER.declareString(constructorArg(), new ParseField("name"));
|
|
|
PARSER.declareIntArray(optionalConstructorArg(), new ParseField("shard_ids"));
|
|
|
PARSER.declareString(constructorArg(), new ParseField("error_type"));
|
|
|
- PARSER.declareString(constructorArg(), new ParseField("message"));
|
|
|
+ PARSER.declareString(optionalConstructorArg(), new ParseField("message"));
|
|
|
+ PARSER.declareInt(optionalConstructorArg(), new ParseField("stall_time_seconds"));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -110,6 +130,7 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
}
|
|
|
builder.field("error_type", errorType.toString());
|
|
|
builder.field("message", message);
|
|
|
+ builder.field("stall_time_seconds", stallTimeSeconds);
|
|
|
return builder;
|
|
|
}
|
|
|
|
|
@@ -121,13 +142,32 @@ public class IndexError implements Writeable, ToXContentFragment {
|
|
|
return indexName.equals(that.indexName)
|
|
|
&& Arrays.equals(shardIds, that.shardIds)
|
|
|
&& errorType == that.errorType
|
|
|
- && message.equals(that.message);
|
|
|
+ && message.equals(that.message)
|
|
|
+ && stallTimeSeconds == stallTimeSeconds;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public int hashCode() {
|
|
|
- int result = Objects.hash(indexName, errorType, message);
|
|
|
+ int result = Objects.hash(indexName, errorType, message, stallTimeSeconds);
|
|
|
result = 31 * result + Arrays.hashCode(shardIds);
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "IndexError{"
|
|
|
+ + "indexName='"
|
|
|
+ + indexName
|
|
|
+ + '\''
|
|
|
+ + ", shardIds="
|
|
|
+ + Arrays.toString(shardIds)
|
|
|
+ + ", errorType="
|
|
|
+ + errorType
|
|
|
+ + ", message='"
|
|
|
+ + message
|
|
|
+ + '\''
|
|
|
+ + ", stallTimeSeconds="
|
|
|
+ + stallTimeSeconds
|
|
|
+ + '}';
|
|
|
+ }
|
|
|
}
|