Skip to content

Commit 1d3feaf

Browse files
Reindex sort deprecation warning take 2 (#49855) (#49899)
Moved the deprecation warning to ReindexValidator to ensure it runs early and works with resilient reindex. Also check that the warning is reported back for wait_for_completion=false. Follow-up to #49458
1 parent b17cfc9 commit 1d3feaf

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

modules/reindex/src/main/java/org/elasticsearch/index/reindex/ReindexValidator.java

+12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
package org.elasticsearch.index.reindex;
2121

22+
import org.apache.logging.log4j.LogManager;
23+
import org.apache.logging.log4j.Logger;
2224
import org.apache.lucene.util.automaton.Automata;
2325
import org.apache.lucene.util.automaton.Automaton;
2426
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
@@ -32,12 +34,18 @@
3234
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
3335
import org.elasticsearch.cluster.service.ClusterService;
3436
import org.elasticsearch.common.Strings;
37+
import org.elasticsearch.common.logging.DeprecationLogger;
3538
import org.elasticsearch.common.regex.Regex;
3639
import org.elasticsearch.common.settings.Settings;
40+
import org.elasticsearch.search.builder.SearchSourceBuilder;
3741

3842
import java.util.List;
3943

4044
class ReindexValidator {
45+
private static final Logger logger = LogManager.getLogger(ReindexValidator.class);
46+
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(logger);
47+
static final String SORT_DEPRECATED_MESSAGE = "The sort option in reindex is deprecated. " +
48+
"Instead consider using query filtering to find the desired subset of data.";
4149

4250
private final CharacterRunAutomaton remoteWhitelist;
4351
private final ClusterService clusterService;
@@ -57,6 +65,10 @@ void initialValidation(ReindexRequest request) {
5765
ClusterState state = clusterService.state();
5866
validateAgainstAliases(request.getSearchRequest(), request.getDestination(), request.getRemoteInfo(), resolver, autoCreateIndex,
5967
state);
68+
SearchSourceBuilder searchSource = request.getSearchRequest().source();
69+
if (searchSource != null && searchSource.sorts() != null && searchSource.sorts().isEmpty() == false) {
70+
deprecationLogger.deprecated(SORT_DEPRECATED_MESSAGE);
71+
}
6072
}
6173

6274
static void checkRemoteWhitelist(CharacterRunAutomaton whitelist, RemoteInfo remoteInfo) {

modules/reindex/src/main/java/org/elasticsearch/index/reindex/Reindexer.java

-9
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.elasticsearch.cluster.service.ClusterService;
4141
import org.elasticsearch.common.Strings;
4242
import org.elasticsearch.common.bytes.BytesReference;
43-
import org.elasticsearch.common.logging.DeprecationLogger;
4443
import org.elasticsearch.common.lucene.uid.Versions;
4544
import org.elasticsearch.common.xcontent.DeprecationHandler;
4645
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
@@ -52,7 +51,6 @@
5251
import org.elasticsearch.index.reindex.remote.RemoteScrollableHitSource;
5352
import org.elasticsearch.script.Script;
5453
import org.elasticsearch.script.ScriptService;
55-
import org.elasticsearch.search.builder.SearchSourceBuilder;
5654
import org.elasticsearch.threadpool.ThreadPool;
5755

5856
import java.io.IOException;
@@ -73,9 +71,6 @@
7371
public class Reindexer {
7472

7573
private static final Logger logger = LogManager.getLogger(Reindexer.class);
76-
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(logger);
77-
static final String SORT_DEPRECATED_MESSAGE = "The sort option in reindex is deprecated. " +
78-
"Instead consider using query filtering to find the desired subset of data.";
7974

8075
private final ClusterService clusterService;
8176
private final Client client;
@@ -93,10 +88,6 @@ public class Reindexer {
9388
}
9489

9590
public void initTask(BulkByScrollTask task, ReindexRequest request, ActionListener<Void> listener) {
96-
SearchSourceBuilder searchSource = request.getSearchRequest().source();
97-
if (searchSource != null && searchSource.sorts() != null && searchSource.sorts().isEmpty() == false) {
98-
deprecationLogger.deprecated(SORT_DEPRECATED_MESSAGE);
99-
}
10091
BulkByScrollParallelizationHelper.initTaskState(task, request, client, listener);
10192
}
10293

modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexSingleNodeTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,6 @@ public void testDeprecatedSort() {
5555

5656
assertHitCount(client().prepareSearch("dest").setSize(0).get(), subsetSize);
5757
assertHitCount(client().prepareSearch("dest").setQuery(new RangeQueryBuilder("foo").gte(0).lt(max-subsetSize)).get(), 0);
58-
assertWarnings(Reindexer.SORT_DEPRECATED_MESSAGE);
58+
assertWarnings(ReindexValidator.SORT_DEPRECATED_MESSAGE);
5959
}
6060
}

modules/reindex/src/test/resources/rest-api-spec/test/reindex/30_search.yml

+35
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,41 @@
169169
q: order:1
170170
- match: { hits.total: 1 }
171171

172+
---
173+
"Sorting deprecated wait_for_completion false":
174+
- skip:
175+
version: " - 7.5.99"
176+
reason: "sort deprecated in 7.6"
177+
features: "warnings"
178+
179+
- do:
180+
index:
181+
index: test
182+
id: 1
183+
body: { "order": 1 }
184+
- do:
185+
indices.refresh: {}
186+
187+
- do:
188+
warnings:
189+
- The sort option in reindex is deprecated. Instead consider using query
190+
filtering to find the desired subset of data.
191+
reindex:
192+
refresh: true
193+
wait_for_completion: false
194+
body:
195+
source:
196+
index: test
197+
sort: order
198+
dest:
199+
index: target
200+
- set: {task: task}
201+
202+
- do:
203+
tasks.get:
204+
wait_for_completion: true
205+
task_id: $task
206+
172207
---
173208
"max_docs in URL":
174209
- skip:

0 commit comments

Comments
 (0)