Skip to content

Commit efe0981

Browse files
committed
Merge branch '6.x' into ccr-6.x
* 6.x: Update shrink's bwc version to 6.1.0 add split index reference in indices.asciidoc Add ability to split shards (#26931) TemplateUpgradeService should only run on the master (#27294) Die with dignity while merging Fix profiling naming issues (#27133) Correctly encode warning headers Fixed references to Multi Index Syntax (#27283) Add an active Elasticsearch WordPress plugin link (#27279) Setting url parts as required to reflect the code base (#27263) keys in aggs percentiles need to be in quotes. (#26905) Align routing param type with search.json (#26958) Update to support bulk updates by query (#27172) Remove duplicated SnapshotStatus (#27276)
2 parents 5f0bd8c + 8f18b18 commit efe0981

File tree

81 files changed

+3845
-1255
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+3845
-1255
lines changed

core/src/main/java/org/elasticsearch/action/ActionModule.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@
128128
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsAction;
129129
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresAction;
130130
import org.elasticsearch.action.admin.indices.shards.TransportIndicesShardStoresAction;
131+
import org.elasticsearch.action.admin.indices.shrink.ResizeAction;
131132
import org.elasticsearch.action.admin.indices.shrink.ShrinkAction;
133+
import org.elasticsearch.action.admin.indices.shrink.TransportResizeAction;
132134
import org.elasticsearch.action.admin.indices.shrink.TransportShrinkAction;
133135
import org.elasticsearch.action.admin.indices.stats.IndicesStatsAction;
134136
import org.elasticsearch.action.admin.indices.stats.TransportIndicesStatsAction;
@@ -181,7 +183,6 @@
181183
import org.elasticsearch.action.search.TransportMultiSearchAction;
182184
import org.elasticsearch.action.search.TransportSearchAction;
183185
import org.elasticsearch.action.search.TransportSearchScrollAction;
184-
import org.elasticsearch.action.support.ActionFilter;
185186
import org.elasticsearch.action.support.ActionFilters;
186187
import org.elasticsearch.action.support.AutoCreateIndex;
187188
import org.elasticsearch.action.support.DestructiveOperations;
@@ -199,7 +200,6 @@
199200
import org.elasticsearch.common.NamedRegistry;
200201
import org.elasticsearch.common.inject.AbstractModule;
201202
import org.elasticsearch.common.inject.multibindings.MapBinder;
202-
import org.elasticsearch.common.inject.multibindings.Multibinder;
203203
import org.elasticsearch.common.logging.ESLoggerFactory;
204204
import org.elasticsearch.common.settings.ClusterSettings;
205205
import org.elasticsearch.common.settings.IndexScopedSettings;
@@ -271,6 +271,7 @@
271271
import org.elasticsearch.rest.action.admin.indices.RestRefreshAction;
272272
import org.elasticsearch.rest.action.admin.indices.RestRolloverIndexAction;
273273
import org.elasticsearch.rest.action.admin.indices.RestShrinkIndexAction;
274+
import org.elasticsearch.rest.action.admin.indices.RestSplitIndexAction;
274275
import org.elasticsearch.rest.action.admin.indices.RestSyncedFlushAction;
275276
import org.elasticsearch.rest.action.admin.indices.RestUpdateSettingsAction;
276277
import org.elasticsearch.rest.action.admin.indices.RestUpgradeAction;
@@ -324,7 +325,6 @@
324325
import java.util.function.UnaryOperator;
325326
import java.util.stream.Collectors;
326327

327-
import static java.util.Collections.unmodifiableList;
328328
import static java.util.Collections.unmodifiableMap;
329329

330330
/**
@@ -438,6 +438,7 @@ public <Request extends ActionRequest, Response extends ActionResponse> void reg
438438
actions.register(IndicesShardStoresAction.INSTANCE, TransportIndicesShardStoresAction.class);
439439
actions.register(CreateIndexAction.INSTANCE, TransportCreateIndexAction.class);
440440
actions.register(ShrinkAction.INSTANCE, TransportShrinkAction.class);
441+
actions.register(ResizeAction.INSTANCE, TransportResizeAction.class);
441442
actions.register(RolloverAction.INSTANCE, TransportRolloverAction.class);
442443
actions.register(DeleteIndexAction.INSTANCE, TransportDeleteIndexAction.class);
443444
actions.register(GetIndexAction.INSTANCE, TransportGetIndexAction.class);
@@ -554,6 +555,7 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster) {
554555
registerHandler.accept(new RestIndicesAliasesAction(settings, restController));
555556
registerHandler.accept(new RestCreateIndexAction(settings, restController));
556557
registerHandler.accept(new RestShrinkIndexAction(settings, restController));
558+
registerHandler.accept(new RestSplitIndexAction(settings, restController));
557559
registerHandler.accept(new RestRolloverIndexAction(settings, restController));
558560
registerHandler.accept(new RestDeleteIndexAction(settings, restController));
559561
registerHandler.accept(new RestCloseIndexAction(settings, restController));

core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexClusterStateUpdateRequest.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.elasticsearch.action.admin.indices.create;
2121

2222
import org.elasticsearch.action.admin.indices.alias.Alias;
23+
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
2324
import org.elasticsearch.action.support.ActiveShardCount;
2425
import org.elasticsearch.cluster.ack.ClusterStateUpdateRequest;
2526
import org.elasticsearch.cluster.block.ClusterBlock;
@@ -43,7 +44,8 @@ public class CreateIndexClusterStateUpdateRequest extends ClusterStateUpdateRequ
4344
private final String index;
4445
private final String providedName;
4546
private final boolean updateAllTypes;
46-
private Index shrinkFrom;
47+
private Index recoverFrom;
48+
private ResizeType resizeType;
4749

4850
private IndexMetaData.State state = IndexMetaData.State.OPEN;
4951

@@ -59,7 +61,6 @@ public class CreateIndexClusterStateUpdateRequest extends ClusterStateUpdateRequ
5961

6062
private ActiveShardCount waitForActiveShards = ActiveShardCount.DEFAULT;
6163

62-
6364
public CreateIndexClusterStateUpdateRequest(TransportMessage originalMessage, String cause, String index, String providedName,
6465
boolean updateAllTypes) {
6566
this.originalMessage = originalMessage;
@@ -99,8 +100,8 @@ public CreateIndexClusterStateUpdateRequest state(IndexMetaData.State state) {
99100
return this;
100101
}
101102

102-
public CreateIndexClusterStateUpdateRequest shrinkFrom(Index shrinkFrom) {
103-
this.shrinkFrom = shrinkFrom;
103+
public CreateIndexClusterStateUpdateRequest recoverFrom(Index recoverFrom) {
104+
this.recoverFrom = recoverFrom;
104105
return this;
105106
}
106107

@@ -109,6 +110,11 @@ public CreateIndexClusterStateUpdateRequest waitForActiveShards(ActiveShardCount
109110
return this;
110111
}
111112

113+
public CreateIndexClusterStateUpdateRequest resizeType(ResizeType resizeType) {
114+
this.resizeType = resizeType;
115+
return this;
116+
}
117+
112118
public TransportMessage originalMessage() {
113119
return originalMessage;
114120
}
@@ -145,8 +151,8 @@ public Set<ClusterBlock> blocks() {
145151
return blocks;
146152
}
147153

148-
public Index shrinkFrom() {
149-
return shrinkFrom;
154+
public Index recoverFrom() {
155+
return recoverFrom;
150156
}
151157

152158
/** True if all fields that span multiple types should be updated, false otherwise */
@@ -165,4 +171,11 @@ public String getProvidedName() {
165171
public ActiveShardCount waitForActiveShards() {
166172
return waitForActiveShards;
167173
}
174+
175+
/**
176+
* Returns the resize type or null if this is an ordinary create index request
177+
*/
178+
public ResizeType resizeType() {
179+
return resizeType;
180+
}
168181
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.action.admin.indices.shrink;
21+
22+
import org.elasticsearch.Version;
23+
import org.elasticsearch.action.Action;
24+
import org.elasticsearch.client.ElasticsearchClient;
25+
26+
public class ResizeAction extends Action<ResizeRequest, ResizeResponse, ResizeRequestBuilder> {
27+
28+
public static final ResizeAction INSTANCE = new ResizeAction();
29+
public static final String NAME = "indices:admin/resize";
30+
public static final Version COMPATIBILITY_VERSION = Version.V_6_1_0; // TODO remove this once it's backported
31+
32+
private ResizeAction() {
33+
super(NAME);
34+
}
35+
36+
@Override
37+
public ResizeResponse newResponse() {
38+
return new ResizeResponse();
39+
}
40+
41+
@Override
42+
public ResizeRequestBuilder newRequestBuilder(ElasticsearchClient client) {
43+
return new ResizeRequestBuilder(client, this);
44+
}
45+
}

core/src/main/java/org/elasticsearch/action/admin/indices/shrink/ShrinkRequest.java renamed to core/src/main/java/org/elasticsearch/action/admin/indices/shrink/ResizeRequest.java

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
*/
1919
package org.elasticsearch.action.admin.indices.shrink;
2020

21+
import org.elasticsearch.Version;
2122
import org.elasticsearch.action.ActionRequestValidationException;
2223
import org.elasticsearch.action.IndicesRequest;
2324
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
2425
import org.elasticsearch.action.support.ActiveShardCount;
2526
import org.elasticsearch.action.support.IndicesOptions;
2627
import org.elasticsearch.action.support.master.AcknowledgedRequest;
28+
import org.elasticsearch.cluster.metadata.IndexMetaData;
2729
import org.elasticsearch.common.ParseField;
2830
import org.elasticsearch.common.io.stream.StreamInput;
2931
import org.elasticsearch.common.io.stream.StreamOutput;
@@ -37,37 +39,41 @@
3739
/**
3840
* Request class to shrink an index into a single shard
3941
*/
40-
public class ShrinkRequest extends AcknowledgedRequest<ShrinkRequest> implements IndicesRequest {
42+
public class ResizeRequest extends AcknowledgedRequest<ResizeRequest> implements IndicesRequest {
4143

42-
public static final ObjectParser<ShrinkRequest, Void> PARSER = new ObjectParser<>("shrink_request", null);
44+
public static final ObjectParser<ResizeRequest, Void> PARSER = new ObjectParser<>("resize_request", null);
4345
static {
44-
PARSER.declareField((parser, request, context) -> request.getShrinkIndexRequest().settings(parser.map()),
46+
PARSER.declareField((parser, request, context) -> request.getTargetIndexRequest().settings(parser.map()),
4547
new ParseField("settings"), ObjectParser.ValueType.OBJECT);
46-
PARSER.declareField((parser, request, context) -> request.getShrinkIndexRequest().aliases(parser.map()),
48+
PARSER.declareField((parser, request, context) -> request.getTargetIndexRequest().aliases(parser.map()),
4749
new ParseField("aliases"), ObjectParser.ValueType.OBJECT);
4850
}
4951

50-
private CreateIndexRequest shrinkIndexRequest;
52+
private CreateIndexRequest targetIndexRequest;
5153
private String sourceIndex;
54+
private ResizeType type = ResizeType.SHRINK;
5255

53-
ShrinkRequest() {}
56+
ResizeRequest() {}
5457

55-
public ShrinkRequest(String targetIndex, String sourceindex) {
56-
this.shrinkIndexRequest = new CreateIndexRequest(targetIndex);
57-
this.sourceIndex = sourceindex;
58+
public ResizeRequest(String targetIndex, String sourceIndex) {
59+
this.targetIndexRequest = new CreateIndexRequest(targetIndex);
60+
this.sourceIndex = sourceIndex;
5861
}
5962

6063
@Override
6164
public ActionRequestValidationException validate() {
62-
ActionRequestValidationException validationException = shrinkIndexRequest == null ? null : shrinkIndexRequest.validate();
65+
ActionRequestValidationException validationException = targetIndexRequest == null ? null : targetIndexRequest.validate();
6366
if (sourceIndex == null) {
6467
validationException = addValidationError("source index is missing", validationException);
6568
}
66-
if (shrinkIndexRequest == null) {
67-
validationException = addValidationError("shrink index request is missing", validationException);
69+
if (targetIndexRequest == null) {
70+
validationException = addValidationError("target index request is missing", validationException);
6871
}
69-
if (shrinkIndexRequest.settings().getByPrefix("index.sort.").isEmpty() == false) {
70-
validationException = addValidationError("can't override index sort when shrinking index", validationException);
72+
if (targetIndexRequest.settings().getByPrefix("index.sort.").isEmpty() == false) {
73+
validationException = addValidationError("can't override index sort when resizing an index", validationException);
74+
}
75+
if (type == ResizeType.SPLIT && IndexMetaData.INDEX_NUMBER_OF_SHARDS_SETTING.exists(targetIndexRequest.settings()) == false) {
76+
validationException = addValidationError("index.number_of_shards is required for split operations", validationException);
7177
}
7278
return validationException;
7379
}
@@ -79,16 +85,24 @@ public void setSourceIndex(String index) {
7985
@Override
8086
public void readFrom(StreamInput in) throws IOException {
8187
super.readFrom(in);
82-
shrinkIndexRequest = new CreateIndexRequest();
83-
shrinkIndexRequest.readFrom(in);
88+
targetIndexRequest = new CreateIndexRequest();
89+
targetIndexRequest.readFrom(in);
8490
sourceIndex = in.readString();
91+
if (in.getVersion().onOrAfter(ResizeAction.COMPATIBILITY_VERSION)) {
92+
type = in.readEnum(ResizeType.class);
93+
} else {
94+
type = ResizeType.SHRINK; // BWC this used to be shrink only
95+
}
8596
}
8697

8798
@Override
8899
public void writeTo(StreamOutput out) throws IOException {
89100
super.writeTo(out);
90-
shrinkIndexRequest.writeTo(out);
101+
targetIndexRequest.writeTo(out);
91102
out.writeString(sourceIndex);
103+
if (out.getVersion().onOrAfter(ResizeAction.COMPATIBILITY_VERSION)) {
104+
out.writeEnum(type);
105+
}
92106
}
93107

94108
@Override
@@ -101,15 +115,15 @@ public IndicesOptions indicesOptions() {
101115
return IndicesOptions.lenientExpandOpen();
102116
}
103117

104-
public void setShrinkIndex(CreateIndexRequest shrinkIndexRequest) {
105-
this.shrinkIndexRequest = Objects.requireNonNull(shrinkIndexRequest, "shrink index request must not be null");
118+
public void setTargetIndex(CreateIndexRequest targetIndexRequest) {
119+
this.targetIndexRequest = Objects.requireNonNull(targetIndexRequest, "target index request must not be null");
106120
}
107121

108122
/**
109123
* Returns the {@link CreateIndexRequest} for the shrink index
110124
*/
111-
public CreateIndexRequest getShrinkIndexRequest() {
112-
return shrinkIndexRequest;
125+
public CreateIndexRequest getTargetIndexRequest() {
126+
return targetIndexRequest;
113127
}
114128

115129
/**
@@ -128,13 +142,13 @@ public String getSourceIndex() {
128142
* non-negative integer, up to the number of copies per shard (number of replicas + 1),
129143
* to wait for the desired amount of shard copies to become active before returning.
130144
* Index creation will only wait up until the timeout value for the number of shard copies
131-
* to be active before returning. Check {@link ShrinkResponse#isShardsAcked()} to
145+
* to be active before returning. Check {@link ResizeResponse#isShardsAcked()} to
132146
* determine if the requisite shard copies were all started before returning or timing out.
133147
*
134148
* @param waitForActiveShards number of active shard copies to wait on
135149
*/
136150
public void setWaitForActiveShards(ActiveShardCount waitForActiveShards) {
137-
this.getShrinkIndexRequest().waitForActiveShards(waitForActiveShards);
151+
this.getTargetIndexRequest().waitForActiveShards(waitForActiveShards);
138152
}
139153

140154
/**
@@ -145,4 +159,18 @@ public void setWaitForActiveShards(ActiveShardCount waitForActiveShards) {
145159
public void setWaitForActiveShards(final int waitForActiveShards) {
146160
setWaitForActiveShards(ActiveShardCount.from(waitForActiveShards));
147161
}
162+
163+
/**
164+
* The type of the resize operation
165+
*/
166+
public void setResizeType(ResizeType type) {
167+
this.type = Objects.requireNonNull(type);
168+
}
169+
170+
/**
171+
* Returns the type of the resize operation
172+
*/
173+
public ResizeType getResizeType() {
174+
return type;
175+
}
148176
}

0 commit comments

Comments
 (0)