Преглед на файлове

Migrate Streamable to Writeable for cluster block package (#37391)

Like преди 6 години
родител
ревизия
106f59012d

+ 1 - 1
server/src/main/java/org/elasticsearch/action/admin/indices/close/TransportVerifyShardBeforeCloseAction.java

@@ -158,7 +158,7 @@ public class TransportVerifyShardBeforeCloseAction extends TransportReplicationA
         @Override
         public void readFrom(final StreamInput in) throws IOException {
             super.readFrom(in);
-            clusterBlock = ClusterBlock.readClusterBlock(in);
+            clusterBlock = new ClusterBlock(in);
         }
 
         @Override

+ 21 - 25
server/src/main/java/org/elasticsearch/cluster/block/ClusterBlock.java

@@ -24,6 +24,7 @@ import org.elasticsearch.common.Nullable;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.Streamable;
+import org.elasticsearch.common.io.stream.Writeable;
 import org.elasticsearch.common.xcontent.ToXContentFragment;
 import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.elasticsearch.rest.RestStatus;
@@ -34,7 +35,7 @@ import java.util.EnumSet;
 import java.util.Locale;
 import java.util.Objects;
 
-public class ClusterBlock implements Streamable, ToXContentFragment {
+public class ClusterBlock implements Streamable, Writeable, ToXContentFragment {
 
     private int id;
     private @Nullable String uuid;
@@ -45,7 +46,24 @@ public class ClusterBlock implements Streamable, ToXContentFragment {
     private boolean allowReleaseResources;
     private RestStatus status;
 
-    private ClusterBlock() {
+    public ClusterBlock(StreamInput in) throws IOException {
+        id = in.readVInt();
+        if (in.getVersion().onOrAfter(Version.V_6_7_0)) {
+            uuid = in.readOptionalString();
+        } else {
+            uuid = null;
+        }
+        description = in.readString();
+        final int len = in.readVInt();
+        ArrayList<ClusterBlockLevel> levels = new ArrayList<>(len);
+        for (int i = 0; i < len; i++) {
+            levels.add(in.readEnum(ClusterBlockLevel.class));
+        }
+        this.levels = EnumSet.copyOf(levels);
+        retryable = in.readBoolean();
+        disableStatePersistence = in.readBoolean();
+        status = RestStatus.readFrom(in);
+        allowReleaseResources = in.readBoolean();
     }
 
     public ClusterBlock(int id, String description, boolean retryable, boolean disableStatePersistence,
@@ -129,31 +147,9 @@ public class ClusterBlock implements Streamable, ToXContentFragment {
         return builder;
     }
 
-    public static ClusterBlock readClusterBlock(StreamInput in) throws IOException {
-        ClusterBlock block = new ClusterBlock();
-        block.readFrom(in);
-        return block;
-    }
-
     @Override
     public void readFrom(StreamInput in) throws IOException {
-        id = in.readVInt();
-        if (in.getVersion().onOrAfter(Version.V_6_7_0)) {
-            uuid = in.readOptionalString();
-        } else {
-            uuid = null;
-        }
-        description = in.readString();
-        final int len = in.readVInt();
-        ArrayList<ClusterBlockLevel> levels = new ArrayList<>(len);
-        for (int i = 0; i < len; i++) {
-            levels.add(in.readEnum(ClusterBlockLevel.class));
-        }
-        this.levels = EnumSet.copyOf(levels);
-        retryable = in.readBoolean();
-        disableStatePersistence = in.readBoolean();
-        status = RestStatus.readFrom(in);
-        allowReleaseResources = in.readBoolean();
+        throw new UnsupportedOperationException("usage of Streamable is to be replaced by Writeable");
     }
 
     @Override

+ 1 - 1
server/src/main/java/org/elasticsearch/cluster/block/ClusterBlockException.java

@@ -43,7 +43,7 @@ public class ClusterBlockException extends ElasticsearchException {
         int totalBlocks = in.readVInt();
         Set<ClusterBlock> blocks = new HashSet<>(totalBlocks);
         for (int i = 0; i < totalBlocks;i++) {
-            blocks.add(ClusterBlock.readClusterBlock(in));
+            blocks.add(new ClusterBlock(in));
         }
         this.blocks = unmodifiableSet(blocks);
     }

+ 1 - 1
server/src/main/java/org/elasticsearch/cluster/block/ClusterBlocks.java

@@ -305,7 +305,7 @@ public class ClusterBlocks extends AbstractDiffable<ClusterBlocks> {
         int totalBlocks = in.readVInt();
         Set<ClusterBlock> blocks = new HashSet<>(totalBlocks);
         for (int i = 0; i < totalBlocks;i++) {
-            blocks.add(ClusterBlock.readClusterBlock(in));
+            blocks.add(new ClusterBlock(in));
         }
         return unmodifiableSet(blocks);
     }

+ 3 - 3
server/src/test/java/org/elasticsearch/cluster/block/ClusterBlockTests.java

@@ -56,7 +56,7 @@ public class ClusterBlockTests extends ESTestCase {
 
             StreamInput in = out.bytes().streamInput();
             in.setVersion(version);
-            ClusterBlock result = ClusterBlock.readClusterBlock(in);
+            ClusterBlock result = new ClusterBlock(in);
 
             assertClusterBlockEquals(clusterBlock, result);
         }
@@ -74,7 +74,7 @@ public class ClusterBlockTests extends ESTestCase {
             expected.writeTo(out);
 
             // Deserialize and check the cluster block
-            final ClusterBlock actual = ClusterBlock.readClusterBlock(out.bytes().streamInput());
+            final ClusterBlock actual = new ClusterBlock(out.bytes().streamInput());
             assertClusterBlockEquals(expected, actual);
         }
 
@@ -90,7 +90,7 @@ public class ClusterBlockTests extends ESTestCase {
             // Deserialize and check the cluster block
             final StreamInput in = out.bytes().streamInput();
             in.setVersion(out.getVersion());
-            final ClusterBlock actual = ClusterBlock.readClusterBlock(in);
+            final ClusterBlock actual = new ClusterBlock(in);
 
             assertThat(actual.id(), equalTo(expected.id()));
             assertThat(actual.status(), equalTo(expected.status()));