Skip to content

Commit c885905

Browse files
committed
Merge remote-tracking branch 'elastic/6.x' into retention-lease-background-sync-6.x
* elastic/6.x: Fix testRestoreIncreasesPrimaryTerms on 6.x (elastic#38314) SQL: Remove exceptions from Analyzer (elastic#38260) (elastic#38287) SQL: Move metrics tracking inside PlanExecutor (elastic#38259) (elastic#38288) Backport of elastic#38311: Move TokenService to seqno powered cas Handle scheduler exceptions (elastic#38183) Mute MlMigrationFullClusterRestartIT#testMigration (elastic#38316) 6.x Backport of elastic#38278: Move ML Optimistic Concurrency Control to Seq No Cleanup construction of interceptors (elastic#38296) Throw if two inner_hits have the same name (elastic#37645) (elastic#38194) AsyncTwoPhaseIndexerTests race condition fixed elastic#38195 Backport#37830 Enable SSL in reindex with security QA tests (elastic#38293) Ensure ILM policies run safely on leader indices (elastic#38140) Introduce ssl settings to reindex from remote (elastic#38292) Fix ordering problem in add or renew lease test (elastic#38281) Mute ReplicationTrackerRetentionLeaseTests#testAddOrRenewRetentionLease (elastic#38276) Fix NPE in Logfile Audit Filter (elastic#38120) (elastic#38271) Enable trace log in FollowerFailOverIT (elastic#38148) SQL: Generate relevant error message when grouping functions are not used in GROUP BY (elastic#38017)
2 parents 6a5d852 + 956c5cd commit c885905

File tree

142 files changed

+2712
-550
lines changed

Some content is hidden

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

142 files changed

+2712
-550
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ allprojects {
206206
}
207207

208208
/* Sets up the dependencies that we build as part of this project but
209-
register as thought they were external to resolve internally. We register
209+
register as though they were external to resolve internally. We register
210210
them as external dependencies so the build plugin that we use can be used
211211
to build elasticsearch plugins outside of the elasticsearch source tree. */
212212
ext.projectSubstitutions = [
@@ -217,6 +217,7 @@ allprojects {
217217
"org.elasticsearch:elasticsearch-core:${version}": ':libs:core',
218218
"org.elasticsearch:elasticsearch-x-content:${version}": ':libs:x-content',
219219
"org.elasticsearch:elasticsearch-secure-sm:${version}": ':libs:secure-sm',
220+
"org.elasticsearch:elasticsearch-ssl-config:${version}": ':libs:elasticsearch-ssl-config',
220221
"org.elasticsearch.client:elasticsearch-rest-client:${version}": ':client:rest',
221222
"org.elasticsearch.client:elasticsearch-rest-client-sniffer:${version}": ':client:sniffer',
222223
"org.elasticsearch.client:elasticsearch-rest-high-level-client:${version}": ':client:rest-high-level',

buildSrc/src/main/resources/forbidden/es-all-signatures.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,6 @@ java.util.concurrent.ScheduledThreadPoolExecutor#<init>(int)
6363
java.util.concurrent.ScheduledThreadPoolExecutor#<init>(int, java.util.concurrent.ThreadFactory)
6464
java.util.concurrent.ScheduledThreadPoolExecutor#<init>(int, java.util.concurrent.RejectedExecutionHandler)
6565
java.util.concurrent.ScheduledThreadPoolExecutor#<init>(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler)
66+
67+
@defaultMessage use Scheduler.schedule(Runnable, delay, executor) instead (mocking tests typically rely on that signature).
68+
org.elasticsearch.threadpool.Scheduler#schedule(org.elasticsearch.common.unit.TimeValue, java.lang.String, java.lang.Runnable)

modules/parent-join/src/main/java/org/elasticsearch/join/query/HasChildQueryBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,9 +517,13 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) throws I
517517
@Override
518518
protected void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
519519
if (innerHitBuilder != null) {
520+
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
521+
if (innerHits.containsKey(name)) {
522+
throw new IllegalArgumentException("[inner_hits] already contains an entry for key [" + name + "]");
523+
}
524+
520525
Map<String, InnerHitContextBuilder> children = new HashMap<>();
521526
InnerHitContextBuilder.extractInnerHits(query, children);
522-
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
523527
InnerHitContextBuilder innerHitContextBuilder =
524528
new ParentChildInnerHitContextBuilder(type, true, query, innerHitBuilder, children);
525529
innerHits.put(name, innerHitContextBuilder);

modules/parent-join/src/main/java/org/elasticsearch/join/query/HasParentQueryBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,9 +367,13 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) throws I
367367
@Override
368368
protected void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
369369
if (innerHitBuilder != null) {
370+
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
371+
if (innerHits.containsKey(name)) {
372+
throw new IllegalArgumentException("[inner_hits] already contains an entry for key [" + name + "]");
373+
}
374+
370375
Map<String, InnerHitContextBuilder> children = new HashMap<>();
371376
InnerHitContextBuilder.extractInnerHits(query, children);
372-
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
373377
InnerHitContextBuilder innerHitContextBuilder =
374378
new ParentChildInnerHitContextBuilder(type, false, query, innerHitBuilder, children);
375379
innerHits.put(name, innerHitContextBuilder);

modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,4 +371,12 @@ public void testIgnoreUnmappedWithRewrite() throws IOException {
371371
assertThat(query, notNullValue());
372372
assertThat(query, instanceOf(MatchNoDocsQuery.class));
373373
}
374+
375+
public void testExtractInnerHitBuildersWithDuplicate() {
376+
final HasChildQueryBuilder queryBuilder
377+
= new HasChildQueryBuilder(CHILD_DOC, new WrapperQueryBuilder(new MatchAllQueryBuilder().toString()), ScoreMode.None);
378+
queryBuilder.innerHit(new InnerHitBuilder("some_name"));
379+
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
380+
() -> InnerHitContextBuilder.extractInnerHits(queryBuilder, Collections.singletonMap("some_name", null)));
381+
}
374382
}

modules/parent-join/src/test/java/org/elasticsearch/join/query/HasParentQueryBuilderTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,12 @@ public void testIgnoreUnmappedWithRewrite() throws IOException {
272272
assertThat(query, notNullValue());
273273
assertThat(query, instanceOf(MatchNoDocsQuery.class));
274274
}
275+
276+
public void testExtractInnerHitBuildersWithDuplicate() {
277+
final HasParentQueryBuilder queryBuilder
278+
= new HasParentQueryBuilder(CHILD_DOC, new WrapperQueryBuilder(new MatchAllQueryBuilder().toString()), false);
279+
queryBuilder.innerHit(new InnerHitBuilder("some_name"));
280+
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
281+
() -> InnerHitContextBuilder.extractInnerHits(queryBuilder, Collections.singletonMap("some_name", null)));
282+
}
275283
}

modules/reindex/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ unitTest {
5656

5757
dependencies {
5858
compile "org.elasticsearch.client:elasticsearch-rest-client:${version}"
59+
compile "org.elasticsearch:elasticsearch-ssl-config:${version}"
5960
// for http - testing reindex from remote
6061
testCompile project(path: ':modules:transport-netty4', configuration: 'runtime')
6162
// for parent/child testing
@@ -71,6 +72,11 @@ thirdPartyAudit.ignoreMissingClasses (
7172
'org.apache.log.Logger',
7273
)
7374

75+
forbiddenPatterns {
76+
// PKCS#12 file are not UTF-8
77+
exclude '**/*.p12'
78+
}
79+
7480
// Support for testing reindex-from-remote against old Elaticsearch versions
7581
configurations {
7682
oldesFixture

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.elasticsearch.action.bulk.Retry;
3535
import org.elasticsearch.action.delete.DeleteRequest;
3636
import org.elasticsearch.action.index.IndexRequest;
37+
import org.elasticsearch.action.support.TransportAction;
3738
import org.elasticsearch.client.ParentTaskAssigningClient;
3839
import org.elasticsearch.common.unit.ByteSizeValue;
3940
import org.elasticsearch.common.unit.TimeValue;
@@ -83,13 +84,15 @@
8384
* Abstract base for scrolling across a search and executing bulk actions on all results. All package private methods are package private so
8485
* their tests can use them. Most methods run in the listener thread pool because the are meant to be fast and don't expect to block.
8586
*/
86-
public abstract class AbstractAsyncBulkByScrollAction<Request extends AbstractBulkByScrollRequest<Request>> {
87+
public abstract class AbstractAsyncBulkByScrollAction<Request extends AbstractBulkByScrollRequest<Request>,
88+
Action extends TransportAction<Request, ?>> {
89+
8790
protected final Logger logger;
8891
protected final BulkByScrollTask task;
8992
protected final WorkerBulkByScrollTaskState worker;
9093
protected final ThreadPool threadPool;
91-
protected final ScriptService scriptService;
9294

95+
protected final Action mainAction;
9396
/**
9497
* The request for this action. Named mainRequest because we create lots of <code>request</code> variables all representing child
9598
* requests of this mainRequest.
@@ -113,7 +116,7 @@ public abstract class AbstractAsyncBulkByScrollAction<Request extends AbstractBu
113116

114117
public AbstractAsyncBulkByScrollAction(BulkByScrollTask task, boolean needsSourceDocumentVersions,
115118
boolean needsSourceDocumentSeqNoAndPrimaryTerm, Logger logger, ParentTaskAssigningClient client,
116-
ThreadPool threadPool, Request mainRequest, ScriptService scriptService,
119+
ThreadPool threadPool, Action mainAction, Request mainRequest,
117120
ActionListener<BulkByScrollResponse> listener) {
118121

119122
this.task = task;
@@ -125,7 +128,7 @@ public AbstractAsyncBulkByScrollAction(BulkByScrollTask task, boolean needsSourc
125128
this.logger = logger;
126129
this.client = client;
127130
this.threadPool = threadPool;
128-
this.scriptService = scriptService;
131+
this.mainAction = mainAction;
129132
this.mainRequest = mainRequest;
130133
this.listener = listener;
131134
BackoffPolicy backoffPolicy = buildBackoffPolicy();

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,22 @@
3131
/**
3232
* Implementation of delete-by-query using scrolling and bulk.
3333
*/
34-
public class AsyncDeleteByQueryAction extends AbstractAsyncBulkByScrollAction<DeleteByQueryRequest> {
34+
public class AsyncDeleteByQueryAction extends AbstractAsyncBulkByScrollAction<DeleteByQueryRequest, TransportDeleteByQueryAction> {
35+
3536
private final boolean useSeqNoForCAS;
3637

3738
public AsyncDeleteByQueryAction(BulkByScrollTask task, Logger logger, ParentTaskAssigningClient client,
38-
ThreadPool threadPool, DeleteByQueryRequest request, ScriptService scriptService,
39-
ClusterState clusterState, ActionListener<BulkByScrollResponse> listener) {
39+
ThreadPool threadPool, TransportDeleteByQueryAction action, DeleteByQueryRequest request,
40+
ScriptService scriptService, ClusterState clusterState, ActionListener<BulkByScrollResponse> listener) {
4041
super(task,
4142
// not all nodes support sequence number powered optimistic concurrency control, we fall back to version
4243
clusterState.nodes().getMinNodeVersion().onOrAfter(Version.V_6_7_0) == false,
4344
// all nodes support sequence number powered optimistic concurrency control and we can use it
4445
clusterState.nodes().getMinNodeVersion().onOrAfter(Version.V_6_7_0),
45-
logger, client, threadPool, request, scriptService, listener);
46+
logger, client, threadPool, action, request, listener);
4647
useSeqNoForCAS = clusterState.nodes().getMinNodeVersion().onOrAfter(Version.V_6_7_0);
4748
}
4849

49-
5050
@Override
5151
protected boolean accept(ScrollableHitSource.Hit doc) {
5252
// Delete-by-query does not require the source to delete a document

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,32 @@
2121

2222
import org.elasticsearch.action.ActionRequest;
2323
import org.elasticsearch.action.ActionResponse;
24+
import org.elasticsearch.client.Client;
2425
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
2526
import org.elasticsearch.cluster.node.DiscoveryNodes;
27+
import org.elasticsearch.cluster.service.ClusterService;
2628
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
2729
import org.elasticsearch.common.settings.ClusterSettings;
2830
import org.elasticsearch.common.settings.IndexScopedSettings;
2931
import org.elasticsearch.common.settings.Setting;
3032
import org.elasticsearch.common.settings.Settings;
3133
import org.elasticsearch.common.settings.SettingsFilter;
34+
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
35+
import org.elasticsearch.env.Environment;
36+
import org.elasticsearch.env.NodeEnvironment;
3237
import org.elasticsearch.plugins.ActionPlugin;
3338
import org.elasticsearch.plugins.Plugin;
3439
import org.elasticsearch.rest.RestController;
3540
import org.elasticsearch.rest.RestHandler;
41+
import org.elasticsearch.script.ScriptService;
3642
import org.elasticsearch.tasks.Task;
43+
import org.elasticsearch.threadpool.ThreadPool;
44+
import org.elasticsearch.watcher.ResourceWatcherService;
3745

46+
import java.util.ArrayList;
3847
import java.util.Arrays;
48+
import java.util.Collection;
49+
import java.util.Collections;
3950
import java.util.List;
4051
import java.util.function.Supplier;
4152

@@ -69,8 +80,19 @@ public List<RestHandler> getRestHandlers(Settings settings, RestController restC
6980
new RestRethrottleAction(settings, restController, nodesInCluster));
7081
}
7182

83+
@Override
84+
public Collection<Object> createComponents(Client client, ClusterService clusterService, ThreadPool threadPool,
85+
ResourceWatcherService resourceWatcherService, ScriptService scriptService,
86+
NamedXContentRegistry xContentRegistry, Environment environment,
87+
NodeEnvironment nodeEnvironment, NamedWriteableRegistry namedWriteableRegistry) {
88+
return Collections.singletonList(new ReindexSslConfig(environment.settings(), environment, resourceWatcherService));
89+
}
90+
7291
@Override
7392
public List<Setting<?>> getSettings() {
74-
return singletonList(TransportReindexAction.REMOTE_CLUSTER_WHITELIST);
93+
final List<Setting<?>> settings = new ArrayList<>();
94+
settings.add(TransportReindexAction.REMOTE_CLUSTER_WHITELIST);
95+
settings.addAll(ReindexSslConfig.getSettings());
96+
return settings;
7597
}
7698
}

0 commit comments

Comments
 (0)