From de6d31ebc2ea193491f5be04d1352805399ccc2a Mon Sep 17 00:00:00 2001
From: Nhat Nguyen <nhat.nguyen@elastic.co>
Date: Sat, 3 Feb 2018 11:59:54 -0500
Subject: [PATCH] Backport fail shard w/o marking as stale PR to v6.3

Relates #28054
---
 .../cluster/action/shard/ShardStateAction.java       | 12 ++++++------
 .../cluster/action/shard/ShardStateActionTests.java  |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/server/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java b/server/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java
index f6e0fa116d6..726f1da80dc 100644
--- a/server/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java
+++ b/server/src/main/java/org/elasticsearch/cluster/action/shard/ShardStateAction.java
@@ -365,7 +365,7 @@ public class ShardStateAction extends AbstractComponent {
             primaryTerm = in.readVLong();
             message = in.readString();
             failure = in.readException();
-            if (in.getVersion().onOrAfter(Version.V_7_0_0_alpha1)) {
+            if (in.getVersion().onOrAfter(Version.V_6_3_0)) {
                 markAsStale = in.readBoolean();
             } else {
                 markAsStale = true;
@@ -397,7 +397,7 @@ public class ShardStateAction extends AbstractComponent {
             out.writeVLong(primaryTerm);
             out.writeString(message);
             out.writeException(failure);
-            if (out.getVersion().onOrAfter(Version.V_7_0_0_alpha1)) {
+            if (out.getVersion().onOrAfter(Version.V_6_3_0)) {
                 out.writeBoolean(markAsStale);
             }
         }
@@ -523,12 +523,12 @@ public class ShardStateAction extends AbstractComponent {
             super(in);
             shardId = ShardId.readShardId(in);
             allocationId = in.readString();
-            if (in.getVersion().before(Version.V_7_0_0_alpha1)) {
+            if (in.getVersion().before(Version.V_6_3_0)) {
                 final long primaryTerm = in.readVLong();
                 assert primaryTerm == 0L : "shard is only started by itself: primary term [" + primaryTerm + "]";
             }
             this.message = in.readString();
-            if (in.getVersion().before(Version.V_7_0_0_alpha1)) {
+            if (in.getVersion().before(Version.V_6_3_0)) {
                 final Exception ex = in.readException();
                 assert ex == null : "started shard must not have failure [" + ex + "]";
             }
@@ -545,11 +545,11 @@ public class ShardStateAction extends AbstractComponent {
             super.writeTo(out);
             shardId.writeTo(out);
             out.writeString(allocationId);
-            if (out.getVersion().before(Version.V_7_0_0_alpha1)) {
+            if (out.getVersion().before(Version.V_6_3_0)) {
                 out.writeVLong(0L);
             }
             out.writeString(message);
-            if (out.getVersion().before(Version.V_7_0_0_alpha1)) {
+            if (out.getVersion().before(Version.V_6_3_0)) {
                 out.writeException(null);
             }
         }
diff --git a/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStateActionTests.java b/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStateActionTests.java
index 9c8564694d1..bbd326ff2fe 100644
--- a/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStateActionTests.java
+++ b/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStateActionTests.java
@@ -423,7 +423,7 @@ public class ShardStateActionTests extends ESTestCase {
 
     public void testShardEntryBWCSerialize() throws Exception {
         final Version bwcVersion = randomValueOtherThanMany(
-            version -> version.onOrAfter(Version.V_7_0_0_alpha1), () -> VersionUtils.randomVersion(random()));
+            version -> version.onOrAfter(Version.V_6_3_0), () -> VersionUtils.randomVersion(random()));
         final ShardId shardId = new ShardId(randomRealisticUnicodeOfLengthBetween(10, 100), UUID.randomUUID().toString(), between(0, 1000));
         final String allocationId = randomRealisticUnicodeOfCodepointLengthBetween(10, 100);
         final String reason = randomRealisticUnicodeOfCodepointLengthBetween(10, 100);