From f18ec511ca5ff2e777a78cf67e77d2398c1caa67 Mon Sep 17 00:00:00 2001 From: Lee Hinman Date: Thu, 17 Aug 2017 14:57:26 -0600 Subject: [PATCH] Disallow : in cluster and index/alias names (#26247) We use `:` for cross-cluster search (eg `cluster:index`), therefore, we should not allow the ambiguity when allowing cluster or index names. Relates to #23892 --- .../main/java/org/elasticsearch/cluster/ClusterName.java | 3 +++ .../cluster/metadata/MetaDataCreateIndexService.java | 3 +++ .../cluster/metadata/MetaDataCreateIndexServiceTests.java | 1 + docs/reference/migration/migrate_7_0.asciidoc | 8 ++++++++ docs/reference/migration/migrate_7_0/cluster.asciidoc | 7 +++++++ docs/reference/migration/migrate_7_0/indices.asciidoc | 7 +++++++ 6 files changed, 29 insertions(+) create mode 100644 docs/reference/migration/migrate_7_0/cluster.asciidoc create mode 100644 docs/reference/migration/migrate_7_0/indices.asciidoc diff --git a/core/src/main/java/org/elasticsearch/cluster/ClusterName.java b/core/src/main/java/org/elasticsearch/cluster/ClusterName.java index 36676300954..ab2efc6061e 100644 --- a/core/src/main/java/org/elasticsearch/cluster/ClusterName.java +++ b/core/src/main/java/org/elasticsearch/cluster/ClusterName.java @@ -34,6 +34,9 @@ public class ClusterName implements Writeable { if (s.isEmpty()) { throw new IllegalArgumentException("[cluster.name] must not be empty"); } + if (s.contains(":")) { + throw new IllegalArgumentException("[cluster.name] must not contain ':'"); + } return new ClusterName(s); }, Setting.Property.NodeScope); diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java index 07a97b4f320..ae3dc19f62d 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java @@ -165,6 +165,9 @@ public class MetaDataCreateIndexService extends AbstractComponent { if (index.contains("#")) { throw exceptionCtor.apply(index, "must not contain '#'"); } + if (index.contains(":")) { + throw exceptionCtor.apply(index, "must not contain ':'"); + } if (index.charAt(0) == '_' || index.charAt(0) == '-' || index.charAt(0) == '+') { throw exceptionCtor.apply(index, "must not start with '_', '-', or '+'"); } diff --git a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java index 387b66d031b..98d8d5072fa 100644 --- a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java @@ -212,6 +212,7 @@ public class MetaDataCreateIndexServiceTests extends ESTestCase { validateIndexName("..", "must not be '.' or '..'"); + validateIndexName("foo:bar", "must not contain ':'"); } private void validateIndexName(String indexName, String errorMessage) { diff --git a/docs/reference/migration/migrate_7_0.asciidoc b/docs/reference/migration/migrate_7_0.asciidoc index 856ace1e448..c3e0a8a7f3b 100644 --- a/docs/reference/migration/migrate_7_0.asciidoc +++ b/docs/reference/migration/migrate_7_0.asciidoc @@ -21,3 +21,11 @@ way to reindex old indices is to use the `reindex` API. ========================================= +[float] +=== Also see: + +* <> +* <> + +include::migrate_7_0/cluster.asciidoc[] +include::migrate_7_0/indices.asciidoc[] diff --git a/docs/reference/migration/migrate_7_0/cluster.asciidoc b/docs/reference/migration/migrate_7_0/cluster.asciidoc new file mode 100644 index 00000000000..b573fc9da40 --- /dev/null +++ b/docs/reference/migration/migrate_7_0/cluster.asciidoc @@ -0,0 +1,7 @@ +[[breaking_70_cluster_changes]] +=== Cluster changes + +==== `:` is no longer allowed in cluster name + +Due to cross-cluster search using `:` to separate a cluster and index name, +cluster names may no longer contain `:`. diff --git a/docs/reference/migration/migrate_7_0/indices.asciidoc b/docs/reference/migration/migrate_7_0/indices.asciidoc new file mode 100644 index 00000000000..eeecacc06fc --- /dev/null +++ b/docs/reference/migration/migrate_7_0/indices.asciidoc @@ -0,0 +1,7 @@ +[[breaking_70_indices_changes]] +=== Indices changes + +==== `:` is no longer allowed in index name + +Due to cross-cluster search using `:` to separate a cluster and index name, +index names may no longer contain `:`.