Commit Graph

5032 Commits

Author SHA1 Message Date
Jason Tedor e11b96ca9c Default to server VM and add client VM check
Today we softly warn about running with the client VM. However, we
should really refuse to start in production mode if running with the
client VM as the performance of the client VM is too devastating for a
server application. This commit adds an option to jvm.options to ensure
that we are starting with the server VM (on all 32-bit non-Windows
platforms on server-class machines (2+ CPUs, 2+ GB physical RAM) this is
the default and on all 64-bit platforms this is the only option) and
adds a bootstrap check for the client VM.

Relates #18155
2016-05-05 10:36:21 -04:00
Jason Tedor 784c9e5fb9 Introduce node handshake
This commit introduces a handshake when initiating a light
connection. During this handshake, node information, cluster name, and
version are received from the target node of the connection. This
information can be used to immediately validate that the target node is
a member of the same cluster, and used to set the version on the
stream. This will allow us to extend APIs that are used during initial
cluster recovery without a major version change.

Relates #15971
2016-05-04 20:06:47 -04:00
Christoph Büscher 5a0cfdd6af Change scriptFields member in InnerHitBuilder to set
Adding random shuffling of xContent to InnterHitBuilderTests shows
that the scriptFields are stored in order as a list internally although
they are an unordered json objects in the query dsl.

This changes the internal representation to a set and updates
serialization accordingly.
2016-05-04 17:43:15 +02:00
Christoph Büscher 223d67df4a Consolidate query generation in QueryShardContext
Currently we have a lot of methods left in QueryShardContext that
take parsers or BytesReference arguments to do some xContent
parsing on the shard. While this still seems necessary in some cases
(e.g. percolation, phrase suggester), the shard context should only
be concerned with generating lucene queries from QueryBuilders.

This change removes all of the parseX() methods in favour of two
public methods toQuery(QueryBuilder) and toFilter(QueryBuilder) that
either call the query builders toFilter() or toQuery() method and
move all code required for parsing out to the respective callers.
2016-05-04 16:52:30 +02:00
Jim Ferenczi 8d3427b44d Fix build: restore illegalScorer still in use in ExpressionSearchScript (2) 2016-05-04 16:48:08 +02:00
Jim Ferenczi c4554fedad Fix build: restore illegalScorer still in use in ExpressionSearchScript 2016-05-04 16:46:44 +02:00
Jim Ferenczi 52eb6f3830 Merge pull request #18127 from jimferenczi/breadth_first_needs_score
Add the ability to use the breadth_first mode with nested aggregations (such as `top_hits`) which require access to score information.
2016-05-04 15:57:08 +02:00
Jason Tedor 78d615f320 Merge pull request #18110 from jasontedor/strings-split-as-array
Remove Strings#splitStringToArray

Remove arbitrary separator/wildcard from PathTrie
2016-05-04 09:38:47 -04:00
Jim Ferenczi 052191f2a2 Add the ability to use the breadth_first mode with nested aggregations (such as `top_hits`) which require access to score information.
The score is recomputed lazily for each document belonging to a top bucket.
Relates to #9825
2016-05-04 15:35:45 +02:00
Jason Tedor 9fe5ce9342 Remove arbitrary separator/wildcard from PathTrie
PathTrie has a constructor that allows for an arbitrary separtor and
wildcard, but this constructor is unused and internally we always use
'/' as the separator and '*' as the wildcard. There are no tests for the
case where the separator differs from the default separator and
wildcard. This commit removes this constructor and now all instances of
PathTrie have the default separator and wildcard.
2016-05-04 09:18:30 -04:00
Jason Tedor 2dea449949 Remove Strings#splitStringToArray
This commit removes the method Strings#splitStringToArray and replaces
the call sites with invocations to String#split. There are only two
explanations for the existence of this method. The first is that
String#split is slightly tricky in that it accepts a regular expression
rather than a character to split on. This means that if s is a string,
s.split(".")  does not split on the character '.', but rather splits on
the regular expression '.' which splits on every character (of course,
this is easily fixed by invoking s.split("\\.") instead). The second
possible explanation is that (again) String#split accepts a regular
expression. This means that there could be a performance concern
compared to just splitting on a single character. However, it turns out
that String#split has a fast path for the case of splitting on a single
character and microbenchmarks show that String#split has 1.5x--2x the
throughput of Strings#splitStringToArray. There is a slight behavior
difference between Strings#splitStringToArray and String#split: namely,
the former would return an empty array in cases when the input string
was null or empty but String#split will just NPE at the call site on
null and return a one-element array containing the empty string when the
input string is empty. There was only one place relying on this behavior
and the call site has been modified accordingly.
2016-05-04 08:12:41 -04:00
Isabel Drost-Fromm 283a6d27f1 Clean up merge commit changes 2016-05-04 13:34:11 +02:00
Isabel Drost-Fromm 3bc926b7e0 Merge branch 'master' into enhancement/switch_geodistancesortbuilder_to_geovalidationmethod 2016-05-04 13:16:40 +02:00
Isabel Drost-Fromm 6f15f35819 Remove left over references to ESTestCase 2016-05-04 12:14:39 +02:00
Isabel Drost-Fromm 6b9ac46402 Merge branch 'master' into enhancement/switch_geodistancesortbuilder_to_geovalidationmethod 2016-05-04 11:30:15 +02:00
Isabel Drost-Fromm ad8bf53bbd Fold helper class into abstract sort test class.
Folds the helper class for random object generation into the
abstract sort test class. Removes a few references to ESTestCase
that were not needed due to inheriting from it along the way.
2016-05-04 11:25:23 +02:00
Isabel Drost-Fromm a8bf75983f Merge branch 'master' into tests/switch_to_random_value_other_than_for_sort 2016-05-04 10:24:46 +02:00
Christoph Büscher ca21aa0cb5 Make reset() in QueryShardContext private
The query shard reset() method resets some internal state in the
query shard context, like clearing query names, the filter flag
or named queries. The problem with this method being public is
that it currently (miss?) used for modifying an existing context
for recursive invocatiob, but the contexts that have been reseted
that way cannot be properly set back to their previous state.

This PR is a step towards removing reset() entirely by first making
it only be used internally in QueryShardContext. In places where
reset() was used we can either create new QueryShardContexts or
modify the existing context because it is discarded afterwards anyway.
2016-05-03 18:56:16 +02:00
Jason Tedor 85d2fc0e38 Avoid string concatentation in IngestDocument.FieldPath
Today, the constructor for IngestDocument#FieldPath does a string
concatentation and two object allocation on every field path. This
commit removes these unnecessary operations.

Relates #18108
2016-05-03 10:05:44 -04:00
Yannick Welsch 98dba262cf Use object equality to compare versions in IndexSettings (#18103)
Fixes an issue where updating index metadata on a index from a version that it does not have in its static list of known versions fails.
2016-05-03 11:31:56 +02:00
Daniel Mitterdorfer 0a6f40c7f5 Enable HTTP compression by default with compression level 3
With this commit we compress HTTP responses provided the client
supports it (as indicated by the HTTP header 'Accept-Encoding').

We're also able to process compressed HTTP requests if needed.

The default compression level is lowered from 6 to 3 as benchmarks
have indicated that this reduces query latency with a negligible
increase in network traffic.

Closes #7309
2016-05-03 08:53:15 +02:00
Mike McCandless 0c6d6a5495 also compute completion stats for 2.x shards 2016-05-02 16:14:05 -04:00
Michael McCandless 16c4c251f5 Merge pull request #18094 from mikemccand/completion_stats_once
Don't try to compute completion stats on a reader after we already closed it

Conflicts:
	core/src/main/java/org/elasticsearch/index/shard/IndexShard.java
2016-05-02 14:49:15 -04:00
Jason Tedor 15f33e61b7 Kill redundant conditional in BootstrapCheck#check
This commit removes an unnecessary if statement in Bootstrap#check. The
removed if statement was duplicating the conditionals in the nested if
statements and was merely an artifact of an earlier refactoring.
2016-05-02 12:22:40 -04:00
Jason Tedor 226679c606 Mark MaxMapCountCheck#isSystemCheck as final
This commit marks the method MaxMapCountCheck#isSystemCheck as final as
this method should not be modifiable by inheriting classes (used in
tests).
2016-05-02 11:48:35 -04:00
Adrien Grand 8bdda49f90 Fail automatic string upgrade if the value of `index` is not recognized. #18082
Closes #18062
2016-05-02 17:28:43 +02:00
Jason Tedor 8e178c4f8e Add system bootstrap checks escape hatch
Today when running in production mode the bootstrap checks are
completely unforgiving. But there are cases where an end-user might not
have the ability to modify some of the system-level settings that cause
the bootstrap checks to trip (e.g., guest settings that are inherited
from a host and can not be modified). This commit adds a setting that
allows system-level bootstrap checks to be ignored for these
end-users. We classify certain bootstrap checks into system-level checks
and only those bootstrap checks will be ignored if this flag is
enabled. All other bootstrap checks are still subject to being enforced
if the user is in production mode. We will still log warnings for these
bootstrap checks because the end-user does still need to be made aware
that they are running in a configuration that is less-than-ideal from a
resiliency perspective.

Relates #18088
2016-05-02 10:59:50 -04:00
Isabel Drost-Fromm 372eceb854 Switch to using predicate for testing existing value 2016-05-02 15:41:05 +02:00
Isabel Drost-Fromm 4cf5385e4d Use plain random values for generating *SortBuilders 2016-05-02 13:50:00 +02:00
Isabel Drost-Fromm cf1d0d5935 Merge branch 'master' into tests/switch_to_random_value_other_than_for_sort 2016-05-02 11:38:40 +02:00
Jason Tedor 0b41580656 Remove unused import from ScalingThreadPoolTests 2016-04-29 16:21:59 -04:00
Jason Tedor c82e564886 Remove racy but unnecessary assertion
This commit removes a racy but unnecessary assertion in scaling thread
pool idle test. Namely, the main test thread can reach the removed
assertion before the last few threads in the thread pool have completed
their tasks and caused the completed tasks count on the underlying
executor to be updated. But this assertion is unnecessary. The main test
thread already waits on a latch that is only decremented immediately
before a task completes. This ensures that it was in fact the case that
every submitted task was executed.

Closes #18072
2016-04-29 16:21:22 -04:00
Christoph Büscher 262a814c8d Tests: Fix TermsQueryBuilderTests expectations when lookup returns no terms
When the termslookup (mocked in this case) doesn't return any terms, the
query used to rewrite to an empty boolean query. Now it rewrites to a
MatchNoDocsQuery. This changes the test expectation accordingly.

Closes #18071
2016-04-29 19:29:25 +02:00
Ali Beyad a31b94e237 When checking if an index tombstone can be applied, use both the index
name and uuid because the cluster state may contain an active index of
the same name (but different uuid).

Closes #18058
Closes #18054
2016-04-29 11:40:31 -04:00
Martijn van Groningen 7aca1389e2 ingest: Add `date_index_name` processor.
Closes #17814
2016-04-29 17:20:48 +02:00
Jason Tedor f349c4f135 Return null for "same" thread pool info
This commit modifes the EsThreadPoolTestCase#info helper method to
return null when info for the thread pool can not be found. This really
should only happen for the "same" thread pool, and so we also assert
that we only get to a place where there is no info if the thread pool
that info was requested for is in fact the "same" thread pool. Not
returning null here and instead throwing an exception would fail tests
that tried to lookup info on the "same" thread pool.
2016-04-29 10:29:02 -04:00
Martijn van Groningen 8c77399f1c test: changed test's expectation that a BooleanQuery is returned. A NoMatchDocsQuery is returned instead now. 2016-04-29 15:47:03 +02:00
David Pilato 2232a7cdf3 Merge branch 'pr/cat-size-time-units' 2016-04-29 15:09:14 +02:00
Jason Tedor c25f8ad912 Avoid sliced locked contention in internal engine
Today we use a sliced lock strategy for acquiring locks to prevent
concurrent updates to the same document. The number of sliced locks is
computed as a linear function of the number of logical
processors. Unfortunately, the probability of a collision against a
sliced lock is prone to the birthday problem and grows faster than
expected. In fact, the mathematics works out such that for a fixed
target probability of collision, the number of lock slices should grow
like the square of the number of logical processors. This is
less-than-ideal, and we can do better anyway. This commit introduces a
strategy for avoiding lock contention within the internal
engine. Ideally, we would only have lock contention if there were
concurrent updates to the same document. We can get close to this ideal
world by associating a lock with the ID of each document. This
association can be held in a concurrent hash map. Now, the JDK
ConcurrentHashMap also uses a sliced lock internally, but it has several
strategies for avoiding taking the locks and these locks are only held
for a very short period of time. This implementation associates a
reference count with the lock that is associated with a document ID and
automatically removes the document ID from the concurrent hash map when
the reference count reaches zero.

Relates #18060
2016-04-29 08:05:23 -04:00
Martijn van Groningen 6c3beaa2eb Drop top level inner hits in favour of inner hits defined in the query dsl.
Fix a limitation that prevent from hierarchical inner hits be defined in query dsl.

Removed the nested_path, parent_child_type and query options from inner hits dsl. These options are only set by ES
upon parsing the has_child, has_parent and nested queries are using their respective query builders.

These options are still used internally, when these options are set a new private copy is created based on the
provided InnerHitBuilder and configuring either nested_path or parent_child_type and the inner query of the query builder
being used.

Closes #11118
2016-04-29 11:17:24 +02:00
Jason Tedor 0cf1d16187 Fix line-length violation in SetProcessor
This commit addresses a checkstyle line-length violation in
SetProcessor.java.
2016-04-28 23:41:16 -04:00
Tal Levy 6302fb65a3 add ability to disable ability to override values of existing fields in set processor 2016-04-28 13:50:19 -07:00
Lee Hinman a0ba3c9a02 Merge remote-tracking branch 'dakrone/add-store-status-to-explain' 2016-04-28 13:47:55 -06:00
Lee Hinman cb29e041c4 Handle the case where `allocatedPostIndexCreate` is true 2016-04-28 13:46:06 -06:00
Jay Modi 34b5839487 Merge pull request #17949 from jaymode/list_setting_exists
fix exists method for list settings when using numbered setting format
2016-04-28 12:25:48 -04:00
Martijn van Groningen 22dc06fb7d removed duplicated code 2016-04-28 16:42:12 +02:00
Isabel Drost-Fromm a03b131319 Shorten nested test query builder generation. 2016-04-28 15:31:56 +02:00
Isabel Drost-Fromm 3490daa7ea Get rid of no longer needed missing generation method 2016-04-28 15:27:36 +02:00
Isabel Drost-Fromm 0c7e58de93 Get rid of duplicate random sort order generation 2016-04-28 15:14:15 +02:00
Isabel Drost-Fromm 8dc0610eaa Get rid of duplicated random ascii generation 2016-04-28 15:07:55 +02:00