Skip to content

Commit 0289330

Browse files
committed
Merge branch 'master' into ccr
* master: Fixed byte buffer leak in Netty4 request handler Avoid uid creation in ParsedDocument (#27241) Rander sum as zero if count is zero for stats aggregation (#26893) (#27193) Add additional explanations around discovery.zen.ping_timeout (#27231) Remove unused searcher parameter in SearchService#createContext (#27227) Upgrade to Lucene 7.1 (#27225) Move IndexShard#getWritingBytes() under InternalEngine (#27209) Adjust bwc version for exists query tests Introducing took time for _msearch
2 parents 57b24a9 + f9e755f commit 0289330

File tree

68 files changed

+423
-158
lines changed

Some content is hidden

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

68 files changed

+423
-158
lines changed

buildSrc/version.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# When updating elasticsearch, please update 'rest' version in core/src/main/resources/org/elasticsearch/bootstrap/test-framework.policy
22
elasticsearch = 7.0.0-alpha1
3-
lucene = 7.1.0-snapshot-f33ed4ba12a
3+
lucene = 7.1.0
44

55
# optional dependencies
66
spatial4j = 0.6

core/licenses/lucene-analyzers-common-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a508bf6b580471ee568dab7d2acfedfa5aadce70

core/licenses/lucene-backward-codecs-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
804a7ce82bba3d085733486bfde4846ecb77ce01

core/licenses/lucene-core-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dd291b7ebf4845483895724d2562214dc7f40049

core/licenses/lucene-grouping-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0732d16c16421fca058a2a07ca4081ec7696365b

core/licenses/lucene-highlighter-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
596550daabae765ad685112e0fe7c4f0fdfccb3f

core/licenses/lucene-join-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
5f26dd64c195258a81175772ef7fe105e7d60a26

core/licenses/lucene-memory-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3ef64c58d0c09ca40d848efa96b585b7476271f2

core/licenses/lucene-misc-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1496ee5fa62206ee5ddf51042a340d6a9ee3b5de

core/licenses/lucene-queries-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1554920ab207a3245fa408d022a5c90ad3a1fea3

core/licenses/lucene-queryparser-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
5767c15c5ee97926829fd8a4337e434fa95f3c08

core/licenses/lucene-sandbox-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
691f7b9ac05f3ad2ac7e80733ef70247904bd3ae

core/licenses/lucene-spatial-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6c64c04d802badb800516a8a574cb993929c3805

core/licenses/lucene-spatial-extras-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3f1bc1aada8f06b176b782da24b9d7ad9641c41a

core/licenses/lucene-spatial3d-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8ded650aed23efb775f17be496e3e3870214e23b

core/licenses/lucene-suggest-7.1.0-snapshot-f33ed4ba12a.jar.sha1

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8d0ed1589ebdccf34e888c6efc0134a13a238c85

core/src/main/java/org/elasticsearch/action/admin/indices/validate/query/TransportValidateQueryAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ protected ShardValidateQueryResponse shardOperation(ShardValidateQueryRequest re
155155
String error = null;
156156
ShardSearchLocalRequest shardSearchLocalRequest = new ShardSearchLocalRequest(request.shardId(), request.types(),
157157
request.nowInMillis(), request.filteringAliases());
158-
SearchContext searchContext = searchService.createSearchContext(shardSearchLocalRequest, SearchService.NO_TIMEOUT, null);
158+
SearchContext searchContext = searchService.createSearchContext(shardSearchLocalRequest, SearchService.NO_TIMEOUT);
159159
try {
160160
ParsedQuery parsedQuery = searchContext.getQueryShardContext().toQuery(request.query());
161161
searchContext.parsedQuery(parsedQuery);

core/src/main/java/org/elasticsearch/action/explain/TransportExplainAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ protected void resolveRequest(ClusterState state, InternalRequest request) {
9090
protected ExplainResponse shardOperation(ExplainRequest request, ShardId shardId) throws IOException {
9191
ShardSearchLocalRequest shardSearchLocalRequest = new ShardSearchLocalRequest(shardId,
9292
new String[]{request.type()}, request.nowInMillis, request.filteringAlias());
93-
SearchContext context = searchService.createSearchContext(shardSearchLocalRequest, SearchService.NO_TIMEOUT, null);
93+
SearchContext context = searchService.createSearchContext(shardSearchLocalRequest, SearchService.NO_TIMEOUT);
9494
Engine.GetResult result = null;
9595
try {
9696
Term uidTerm = context.mapperService().createUidTerm(request.type(), request.id());

core/src/main/java/org/elasticsearch/action/search/MultiSearchResponse.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121

2222
import org.elasticsearch.ElasticsearchException;
2323
import org.elasticsearch.ExceptionsHelper;
24+
import org.elasticsearch.Version;
2425
import org.elasticsearch.action.ActionResponse;
2526
import org.elasticsearch.common.Nullable;
2627
import org.elasticsearch.common.Strings;
2728
import org.elasticsearch.common.io.stream.StreamInput;
2829
import org.elasticsearch.common.io.stream.StreamOutput;
2930
import org.elasticsearch.common.io.stream.Streamable;
31+
import org.elasticsearch.common.unit.TimeValue;
3032
import org.elasticsearch.common.xcontent.ToXContentObject;
3133
import org.elasticsearch.common.xcontent.XContentBuilder;
3234

@@ -112,11 +114,14 @@ public Exception getFailure() {
112114

113115
private Item[] items;
114116

117+
private long tookInMillis;
118+
115119
MultiSearchResponse() {
116120
}
117121

118-
public MultiSearchResponse(Item[] items) {
122+
public MultiSearchResponse(Item[] items, long tookInMillis) {
119123
this.items = items;
124+
this.tookInMillis = tookInMillis;
120125
}
121126

122127
@Override
@@ -131,13 +136,23 @@ public Item[] getResponses() {
131136
return this.items;
132137
}
133138

139+
/**
140+
* How long the msearch took.
141+
*/
142+
public TimeValue getTook() {
143+
return new TimeValue(tookInMillis);
144+
}
145+
134146
@Override
135147
public void readFrom(StreamInput in) throws IOException {
136148
super.readFrom(in);
137149
items = new Item[in.readVInt()];
138150
for (int i = 0; i < items.length; i++) {
139151
items[i] = Item.readItem(in);
140152
}
153+
if (in.getVersion().onOrAfter(Version.V_7_0_0_alpha1)) {
154+
tookInMillis = in.readVLong();
155+
}
141156
}
142157

143158
@Override
@@ -147,11 +162,15 @@ public void writeTo(StreamOutput out) throws IOException {
147162
for (Item item : items) {
148163
item.writeTo(out);
149164
}
165+
if (out.getVersion().onOrAfter(Version.V_7_0_0_alpha1)) {
166+
out.writeVLong(tookInMillis);
167+
}
150168
}
151169

152170
@Override
153171
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
154172
builder.startObject();
173+
builder.field("took", tookInMillis);
155174
builder.startArray(Fields.RESPONSES);
156175
for (Item item : items) {
157176
builder.startObject();

core/src/main/java/org/elasticsearch/action/search/TransportMultiSearchAction.java

+24-10
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,18 @@
3434
import org.elasticsearch.threadpool.ThreadPool;
3535
import org.elasticsearch.transport.TransportService;
3636

37-
import java.util.List;
3837
import java.util.Queue;
3938
import java.util.concurrent.ConcurrentLinkedQueue;
39+
import java.util.concurrent.TimeUnit;
4040
import java.util.concurrent.atomic.AtomicInteger;
41+
import java.util.function.LongSupplier;
4142

4243
public class TransportMultiSearchAction extends HandledTransportAction<MultiSearchRequest, MultiSearchResponse> {
4344

4445
private final int availableProcessors;
4546
private final ClusterService clusterService;
4647
private final TransportAction<SearchRequest, SearchResponse> searchAction;
48+
private final LongSupplier relativeTimeProvider;
4749

4850
@Inject
4951
public TransportMultiSearchAction(Settings settings, ThreadPool threadPool, TransportService transportService,
@@ -53,19 +55,23 @@ public TransportMultiSearchAction(Settings settings, ThreadPool threadPool, Tran
5355
this.clusterService = clusterService;
5456
this.searchAction = searchAction;
5557
this.availableProcessors = EsExecutors.numberOfProcessors(settings);
58+
this.relativeTimeProvider = System::nanoTime;
5659
}
5760

5861
TransportMultiSearchAction(ThreadPool threadPool, ActionFilters actionFilters, TransportService transportService,
5962
ClusterService clusterService, TransportAction<SearchRequest, SearchResponse> searchAction,
60-
IndexNameExpressionResolver resolver, int availableProcessors) {
63+
IndexNameExpressionResolver resolver, int availableProcessors, LongSupplier relativeTimeProvider) {
6164
super(Settings.EMPTY, MultiSearchAction.NAME, threadPool, transportService, actionFilters, resolver, MultiSearchRequest::new);
6265
this.clusterService = clusterService;
6366
this.searchAction = searchAction;
6467
this.availableProcessors = availableProcessors;
68+
this.relativeTimeProvider = relativeTimeProvider;
6569
}
6670

6771
@Override
6872
protected void doExecute(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener) {
73+
final long relativeStartTime = relativeTimeProvider.getAsLong();
74+
6975
ClusterState clusterState = clusterService.state();
7076
clusterState.blocks().globalBlockedRaiseException(ClusterBlockLevel.READ);
7177

@@ -85,7 +91,7 @@ protected void doExecute(MultiSearchRequest request, ActionListener<MultiSearchR
8591
final AtomicInteger responseCounter = new AtomicInteger(numRequests);
8692
int numConcurrentSearches = Math.min(numRequests, maxConcurrentSearches);
8793
for (int i = 0; i < numConcurrentSearches; i++) {
88-
executeSearch(searchRequestSlots, responses, responseCounter, listener);
94+
executeSearch(searchRequestSlots, responses, responseCounter, listener, relativeStartTime);
8995
}
9096
}
9197

@@ -111,11 +117,12 @@ static int defaultMaxConcurrentSearches(int availableProcessors, ClusterState st
111117
* @param responseCounter incremented on each response
112118
* @param listener the listener attached to the multi-search request
113119
*/
114-
private void executeSearch(
120+
void executeSearch(
115121
final Queue<SearchRequestSlot> requests,
116122
final AtomicArray<MultiSearchResponse.Item> responses,
117123
final AtomicInteger responseCounter,
118-
final ActionListener<MultiSearchResponse> listener) {
124+
final ActionListener<MultiSearchResponse> listener,
125+
final long relativeStartTime) {
119126
SearchRequestSlot request = requests.poll();
120127
if (request == null) {
121128
/*
@@ -155,16 +162,25 @@ private void handleResponse(final int responseSlot, final MultiSearchResponse.It
155162
} else {
156163
if (thread == Thread.currentThread()) {
157164
// we are on the same thread, we need to fork to another thread to avoid recursive stack overflow on a single thread
158-
threadPool.generic().execute(() -> executeSearch(requests, responses, responseCounter, listener));
165+
threadPool.generic()
166+
.execute(() -> executeSearch(requests, responses, responseCounter, listener, relativeStartTime));
159167
} else {
160168
// we are on a different thread (we went asynchronous), it's safe to recurse
161-
executeSearch(requests, responses, responseCounter, listener);
169+
executeSearch(requests, responses, responseCounter, listener, relativeStartTime);
162170
}
163171
}
164172
}
165173

166174
private void finish() {
167-
listener.onResponse(new MultiSearchResponse(responses.toArray(new MultiSearchResponse.Item[responses.length()])));
175+
listener.onResponse(new MultiSearchResponse(responses.toArray(new MultiSearchResponse.Item[responses.length()]),
176+
buildTookInMillis()));
177+
}
178+
179+
/**
180+
* Builds how long it took to execute the msearch.
181+
*/
182+
private long buildTookInMillis() {
183+
return TimeUnit.NANOSECONDS.toMillis(relativeTimeProvider.getAsLong() - relativeStartTime);
168184
}
169185
});
170186
}
@@ -178,7 +194,5 @@ static final class SearchRequestSlot {
178194
this.request = request;
179195
this.responseSlot = responseSlot;
180196
}
181-
182197
}
183-
184198
}

core/src/main/java/org/elasticsearch/index/engine/Engine.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ public MergeStats getMergeStats() {
187187
/** returns the history uuid for the engine */
188188
public abstract String getHistoryUUID();
189189

190+
/** Returns how many bytes we are currently moving from heap to disk */
191+
public abstract long getWritingBytes();
192+
190193
/**
191194
* A throttling class that can be activated, causing the
192195
* {@code acquireThrottle} method to block on a lock when throttling
@@ -707,7 +710,7 @@ protected void writerSegmentStats(SegmentsStats stats) {
707710
}
708711

709712
/** How much heap is used that would be freed by a refresh. Note that this may throw {@link AlreadyClosedException}. */
710-
public abstract long getIndexBufferRAMBytesUsed();
713+
public abstract long getIndexBufferRAMBytesUsed();
711714

712715
protected Segment[] getSegmentInfo(SegmentInfos lastCommittedSegmentInfos, boolean verbose) {
713716
ensureOpen();

0 commit comments

Comments
 (0)