Skip to content

Commit 341f54d

Browse files
committed
Use EnumSet rather than static mutable arrays
ClusterBlockLevel uses arrays but should use EnumSets instead
1 parent 0593747 commit 341f54d

File tree

5 files changed

+24
-16
lines changed

5 files changed

+24
-16
lines changed

src/main/java/org/elasticsearch/cluster/block/ClusterBlock.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
import java.io.IOException;
3030
import java.io.Serializable;
31+
import java.util.ArrayList;
32+
import java.util.EnumSet;
3133
import java.util.Locale;
3234

3335
/**
@@ -39,7 +41,7 @@ public class ClusterBlock implements Serializable, Streamable, ToXContent {
3941

4042
private String description;
4143

42-
private ClusterBlockLevel[] levels;
44+
private EnumSet<ClusterBlockLevel> levels;
4345

4446
private boolean retryable;
4547

@@ -50,7 +52,7 @@ public class ClusterBlock implements Serializable, Streamable, ToXContent {
5052
ClusterBlock() {
5153
}
5254

53-
public ClusterBlock(int id, String description, boolean retryable, boolean disableStatePersistence, RestStatus status, ClusterBlockLevel... levels) {
55+
public ClusterBlock(int id, String description, boolean retryable, boolean disableStatePersistence, RestStatus status, EnumSet<ClusterBlockLevel> levels) {
5456
this.id = id;
5557
this.description = description;
5658
this.retryable = retryable;
@@ -71,7 +73,7 @@ public RestStatus status() {
7173
return this.status;
7274
}
7375

74-
public ClusterBlockLevel[] levels() {
76+
public EnumSet<ClusterBlockLevel> levels() {
7577
return this.levels;
7678
}
7779

@@ -126,10 +128,12 @@ public static ClusterBlock readClusterBlock(StreamInput in) throws IOException {
126128
public void readFrom(StreamInput in) throws IOException {
127129
id = in.readVInt();
128130
description = in.readString();
129-
levels = new ClusterBlockLevel[in.readVInt()];
130-
for (int i = 0; i < levels.length; i++) {
131-
levels[i] = ClusterBlockLevel.fromId(in.readVInt());
131+
final int len = in.readVInt();
132+
ArrayList<ClusterBlockLevel> levels = new ArrayList<>();
133+
for (int i = 0; i < len; i++) {
134+
levels.add(ClusterBlockLevel.fromId(in.readVInt()));
132135
}
136+
this.levels = EnumSet.copyOf(levels);
133137
retryable = in.readBoolean();
134138
disableStatePersistence = in.readBoolean();
135139
status = RestStatus.readFrom(in);
@@ -139,7 +143,7 @@ public void readFrom(StreamInput in) throws IOException {
139143
public void writeTo(StreamOutput out) throws IOException {
140144
out.writeVInt(id);
141145
out.writeString(description);
142-
out.writeVInt(levels.length);
146+
out.writeVInt(levels.size());
143147
for (ClusterBlockLevel level : levels) {
144148
out.writeVInt(level.id());
145149
}

src/main/java/org/elasticsearch/cluster/block/ClusterBlockLevel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import org.elasticsearch.ElasticsearchIllegalArgumentException;
2323

24+
import java.util.EnumSet;
25+
2426
/**
2527
*
2628
*/
@@ -29,8 +31,8 @@ public enum ClusterBlockLevel {
2931
WRITE(1),
3032
METADATA(2);
3133

32-
public static final ClusterBlockLevel[] ALL = new ClusterBlockLevel[]{READ, WRITE, METADATA};
33-
public static final ClusterBlockLevel[] READ_WRITE = new ClusterBlockLevel[]{READ, WRITE};
34+
public static final EnumSet<ClusterBlockLevel> ALL = EnumSet.of(READ, WRITE, METADATA);
35+
public static final EnumSet<ClusterBlockLevel> READ_WRITE = EnumSet.of(READ, WRITE);
3436

3537
private final int id;
3638

src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.elasticsearch.search.warmer.IndexWarmersMetaData;
4747

4848
import java.io.IOException;
49+
import java.util.EnumSet;
4950
import java.util.HashMap;
5051
import java.util.Locale;
5152
import java.util.Map;
@@ -113,10 +114,10 @@ public static <T extends Custom> Custom.Factory<T> lookupFactorySafe(String type
113114
return factory;
114115
}
115116

116-
public static final ClusterBlock INDEX_READ_ONLY_BLOCK = new ClusterBlock(5, "index read-only (api)", false, false, RestStatus.FORBIDDEN, ClusterBlockLevel.WRITE, ClusterBlockLevel.METADATA);
117-
public static final ClusterBlock INDEX_READ_BLOCK = new ClusterBlock(7, "index read (api)", false, false, RestStatus.FORBIDDEN, ClusterBlockLevel.READ);
118-
public static final ClusterBlock INDEX_WRITE_BLOCK = new ClusterBlock(8, "index write (api)", false, false, RestStatus.FORBIDDEN, ClusterBlockLevel.WRITE);
119-
public static final ClusterBlock INDEX_METADATA_BLOCK = new ClusterBlock(9, "index metadata (api)", false, false, RestStatus.FORBIDDEN, ClusterBlockLevel.METADATA);
117+
public static final ClusterBlock INDEX_READ_ONLY_BLOCK = new ClusterBlock(5, "index read-only (api)", false, false, RestStatus.FORBIDDEN, EnumSet.of(ClusterBlockLevel.WRITE, ClusterBlockLevel.METADATA));
118+
public static final ClusterBlock INDEX_READ_BLOCK = new ClusterBlock(7, "index read (api)", false, false, RestStatus.FORBIDDEN, EnumSet.of(ClusterBlockLevel.READ));
119+
public static final ClusterBlock INDEX_WRITE_BLOCK = new ClusterBlock(8, "index write (api)", false, false, RestStatus.FORBIDDEN, EnumSet.of(ClusterBlockLevel.WRITE));
120+
public static final ClusterBlock INDEX_METADATA_BLOCK = new ClusterBlock(9, "index metadata (api)", false, false, RestStatus.FORBIDDEN, EnumSet.of(ClusterBlockLevel.METADATA));
120121

121122
public static enum State {
122123
OPEN((byte) 0),

src/main/java/org/elasticsearch/cluster/metadata/MetaData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public static <T extends Custom> Custom.Factory<T> lookupFactorySafe(String type
111111

112112
public static final String SETTING_READ_ONLY = "cluster.blocks.read_only";
113113

114-
public static final ClusterBlock CLUSTER_READ_ONLY_BLOCK = new ClusterBlock(6, "cluster read-only (api)", false, false, RestStatus.FORBIDDEN, ClusterBlockLevel.WRITE, ClusterBlockLevel.METADATA);
114+
public static final ClusterBlock CLUSTER_READ_ONLY_BLOCK = new ClusterBlock(6, "cluster read-only (api)", false, false, RestStatus.FORBIDDEN, EnumSet.of(ClusterBlockLevel.WRITE, ClusterBlockLevel.METADATA));
115115

116116
public static final MetaData EMPTY_META_DATA = builder().build();
117117

src/main/java/org/elasticsearch/tribe/TribeService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.elasticsearch.node.internal.InternalNode;
5050
import org.elasticsearch.rest.RestStatus;
5151

52+
import java.util.EnumSet;
5253
import java.util.List;
5354
import java.util.Map;
5455
import java.util.Set;
@@ -74,8 +75,8 @@
7475
*/
7576
public class TribeService extends AbstractLifecycleComponent<TribeService> {
7677

77-
public static final ClusterBlock TRIBE_METADATA_BLOCK = new ClusterBlock(10, "tribe node, metadata not allowed", false, false, RestStatus.BAD_REQUEST, ClusterBlockLevel.METADATA);
78-
public static final ClusterBlock TRIBE_WRITE_BLOCK = new ClusterBlock(11, "tribe node, write not allowed", false, false, RestStatus.BAD_REQUEST, ClusterBlockLevel.WRITE);
78+
public static final ClusterBlock TRIBE_METADATA_BLOCK = new ClusterBlock(10, "tribe node, metadata not allowed", false, false, RestStatus.BAD_REQUEST, EnumSet.of(ClusterBlockLevel.METADATA));
79+
public static final ClusterBlock TRIBE_WRITE_BLOCK = new ClusterBlock(11, "tribe node, write not allowed", false, false, RestStatus.BAD_REQUEST, EnumSet.of(ClusterBlockLevel.WRITE));
7980

8081
public static Settings processSettings(Settings settings) {
8182
if (settings.get(TRIBE_NAME) != null) {

0 commit comments

Comments
 (0)