From c05328a3644ac9922d9a4cd223cc9bbba4bce0e0 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 18 Apr 2018 22:41:19 -0400 Subject: [PATCH 1/2] Do not serialize common stats flags using ordinal This commit remove serializing of common stats flags via its enum ordinal and uses an explicit index defined on the enum. This is to enable us to remove an unused flag (Suggest) without ruining the ordering and thus breaking serialization. --- .../admin/indices/stats/CommonStatsFlags.java | 49 ++++++++++--------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java b/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java index 7d6e7c124cd37..2ae50057f14bf 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java @@ -53,7 +53,7 @@ public CommonStatsFlags(StreamInput in) throws IOException { final long longFlags = in.readLong(); flags.clear(); for (Flag flag : Flag.values()) { - if ((longFlags & (1 << flag.ordinal())) != 0) { + if ((longFlags & (1 << flag.getIndex())) != 0) { flags.add(flag); } } @@ -68,7 +68,7 @@ public CommonStatsFlags(StreamInput in) throws IOException { public void writeTo(StreamOutput out) throws IOException { long longFlags = 0; for (Flag flag : flags) { - longFlags |= (1 << flag.ordinal()); + longFlags |= (1 << flag.getIndex()); } out.writeLong(longFlags); @@ -207,34 +207,39 @@ public CommonStatsFlags clone() { } public enum Flag { - // Do not change the order of these flags we use - // the ordinal for encoding! Only append to the end! - Store("store"), - Indexing("indexing"), - Get("get"), - Search("search"), - Merge("merge"), - Flush("flush"), - Refresh("refresh"), - QueryCache("query_cache"), - FieldData("fielddata"), - Docs("docs"), - Warmer("warmer"), - Completion("completion"), - Segments("segments"), - Translog("translog"), - Suggest("suggest"), // unused - RequestCache("request_cache"), - Recovery("recovery"); + Store("store", 0), + Indexing("indexing", 1), + Get("get", 2), + Search("search", 3), + Merge("merge", 4), + Flush("flush", 5), + Refresh("refresh", 6), + QueryCache("query_cache", 7), + FieldData("fielddata", 8), + Docs("docs", 9), + Warmer("warmer", 10), + Completion("completion", 11), + Segments("segments", 12), + Translog("translog", 13), + Suggest("suggest", 14), // unused + RequestCache("request_cache", 15), + Recovery("recovery", 16); private final String restName; + private final int index; - Flag(String restName) { + Flag(final String restName, final int index) { this.restName = restName; + this.index = index; } public String getRestName() { return restName; } + + public int getIndex() { + return index; + } + } } From 2ec7c9e502b9112c1b07a4d8bbfb96c9e575c483 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 18 Apr 2018 23:19:31 -0400 Subject: [PATCH 2/2] Accessibility --- .../action/admin/indices/stats/CommonStatsFlags.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java b/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java index 2ae50057f14bf..b222fed7f0fff 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/stats/CommonStatsFlags.java @@ -237,7 +237,7 @@ public String getRestName() { return restName; } - public int getIndex() { + private int getIndex() { return index; }