1919
2020package org .elasticsearch .indices .recovery ;
2121
22+ import org .elasticsearch .Version ;
2223import org .elasticsearch .cluster .node .DiscoveryNode ;
2324import org .elasticsearch .cluster .routing .RecoverySource ;
2425import org .elasticsearch .cluster .routing .ShardRouting ;
@@ -110,6 +111,7 @@ public static Stage fromId(byte id) {
110111 private DiscoveryNode sourceNode ;
111112 private DiscoveryNode targetNode ;
112113 private boolean primary = false ;
114+ private boolean sequenceNumberBasedRecovery = true ;
113115
114116 private RecoveryState () {
115117 }
@@ -219,6 +221,14 @@ public boolean getPrimary() {
219221 return primary ;
220222 }
221223
224+ public boolean getSequenceNumberBasedRecovery () {
225+ return sequenceNumberBasedRecovery ;
226+ }
227+
228+ public void setSequenceNumberBasedRecovery (final boolean sequenceNumberBasedRecovery ) {
229+ this .sequenceNumberBasedRecovery = sequenceNumberBasedRecovery ;
230+ }
231+
222232 public static RecoveryState readRecoveryState (StreamInput in ) throws IOException {
223233 RecoveryState recoveryState = new RecoveryState ();
224234 recoveryState .readFrom (in );
@@ -237,6 +247,11 @@ public synchronized void readFrom(StreamInput in) throws IOException {
237247 translog .readFrom (in );
238248 verifyIndex .readFrom (in );
239249 primary = in .readBoolean ();
250+ if (in .getVersion ().onOrAfter (Version .V_6_0_0_alpha1_UNRELEASED )) {
251+ sequenceNumberBasedRecovery = in .readBoolean ();
252+ } else {
253+ sequenceNumberBasedRecovery = false ;
254+ }
240255 }
241256
242257 @ Override
@@ -251,6 +266,9 @@ public void writeTo(StreamOutput out) throws IOException {
251266 translog .writeTo (out );
252267 verifyIndex .writeTo (out );
253268 out .writeBoolean (primary );
269+ if (out .getVersion ().onOrAfter (Version .V_6_0_0_alpha1_UNRELEASED )) {
270+ out .writeBoolean (sequenceNumberBasedRecovery );
271+ }
254272 }
255273
256274 @ Override
@@ -260,6 +278,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
260278 builder .field (Fields .TYPE , recoverySource .getType ());
261279 builder .field (Fields .STAGE , stage .toString ());
262280 builder .field (Fields .PRIMARY , primary );
281+ builder .field (Fields .SEQUENCE_NUMBER_BASED_RECOVERY , sequenceNumberBasedRecovery );
263282 builder .dateField (Fields .START_TIME_IN_MILLIS , Fields .START_TIME , timer .startTime );
264283 if (timer .stopTime > 0 ) {
265284 builder .dateField (Fields .STOP_TIME_IN_MILLIS , Fields .STOP_TIME , timer .stopTime );
@@ -308,6 +327,7 @@ static final class Fields {
308327 static final String TYPE = "type" ;
309328 static final String STAGE = "stage" ;
310329 static final String PRIMARY = "primary" ;
330+ static final String SEQUENCE_NUMBER_BASED_RECOVERY = "sequence_number_based_recovery" ;
311331 static final String START_TIME = "start_time" ;
312332 static final String START_TIME_IN_MILLIS = "start_time_in_millis" ;
313333 static final String STOP_TIME = "stop_time" ;
0 commit comments