summaryrefslogtreecommitdiff
path: root/core/src/main
AgeCommit message (Collapse)Author
2017-07-05Switch indices read-only if a node runs out of disk space (#25541)testSimon Willnauer
Today when we run out of disk all kinds of crazy things can happen and nodes are becoming hard to maintain once out of disk is hit. While we try to move shards away if we hit watermarks this might not be possible in many situations. Based on the discussion in #24299 this change monitors disk utilization and adds a flood-stage watermark that causes all indices that are allocated on a node hitting the flood-stage mark to be switched read-only (with the option to be deleted). This allows users to react on the low disk situation while subsequent write requests will be rejected. Users can switch individual indices read-write once the situation is sorted out. There is no automatic read-write switch once the node has enough space. This requires user interaction. The flood-stage watermark is set to `95%` utilization by default. Closes #24299
2017-07-05Throw back replica local checkpoint on new primaryJason Tedor
This commit causes a replica to throwback its local checkpoint to the global checkpoint when learning of a new primary through a replica operation. Relates #25452
2017-07-05Ensure `index.mapping.single_type` can only be set on 5.x indices (#25375)Simon Willnauer
In 6.x we prevent multiple types and default to `index.mapping.single_type: false` This change removes the registered setting and ensures that it's preserved for 5.x indices. Relates to #24961
2017-07-05QueryBuilders should implement ToXContentObject (#25530)Christoph Büscher
All query builders written as self contained xContent objects, to we should mark them accordingly using ToXContentObject. This also makes it possible to use things like XContentHelper#toXContent to render query builders in tests.
2017-07-04Make totalHits a long in CollapseTopFieldDocs.Adrien Grand
Relates to #25349.
2017-07-04Adds rewrite phase to aggregations (#25495)Colin Goodheart-Smithe
* Adds rewrite phase to aggregations This change adds aggregations to the rewrite performed by the `SearchSourceBuilder`. This means that `AggregationBuilder`s are able to implement a `rewrite()` method where they can return a new `AggregationBuilder` which is functionally the same but in a more primitive form. This is exactly analogous to the rewrite done by the `QueryBuilder`s. The first aggregation to implement the rewrite are the filter and filters aggregations so they can rewrite the filters they contain. Closes #17676 * Removes rewrite from PipelineAggregationBuilder Rewrite is based on shard level information. Since pipeline aggregation are run in the reduce phase it doesn’t make sense to rewrite them on the shards. In fact eventually we shouldn’t be transporting them to the shards at all and should be retaining them on the coordinating node for execution in the reduce phase * Addresses review comments * addresses more review comments * Fixed imports
2017-07-04Upgrade randomizedrunner to 2.5.2 (#25533)Simon Willnauer
An issue causing confusing error messages during test execution has been fixed randomizedtesting/randomizedtesting#250
2017-07-04[Analysis] Support normalizer in request param (#24767)Jun Ohtani
* [Analysis] Support normalizer in request param Support normalizer param Support custom normalizer with char_filter/filter param Closes #23347
2017-07-04Remove deprecated IdsQueryBuilder constructor (#25529)Christoph Büscher
The constructor using `types` has been deprecated for a while now (starting with ES 5.1.). It can be removed in the next mayor version. Since types are optional they should be added with the #types() setter.
2017-07-04Adds check for negative search request size (#25397)Colin Goodheart-Smithe
* Adds check for negative search request size This change adds a check to `SearchSourceBuilder` to throw and exception if the size set on it is set to a negative value. Closes #22530 * fix error in reindex * update re-index tests * Addresses review comment * Fixed tests * Added random negative size test * Fixes test
2017-07-03Remove QueryParseContext (#25486)Christoph Büscher
QueryParseContext is currently only used as a wrapper for an XContentParser, so this change removes it entirely and changes the appropriate APIs that use it so far to only accept a parser instead.
2017-07-02Cleanup network / transport related settings (#25489)Simon Willnauer
This commit makes the use of the global network settings explicit instead of implicit within NetworkService. It cleans up several places where we fall back to the global settings while we should have used tcp or http ones. In addition this change also removes unnecessary settings classes
2017-07-01Remove allocation id from replica replication response (#25488)Yannick Welsch
The replica replication response object has an extra allocationId field that contains the allocation id of the replica on which the request was executed. As we are sending the allocation id with the actual replica replication request, and check when executing the replica replication action that the allocation id of the replica shard is what we expect, there is no need to communicate back the allocation id as part of the response object.
2017-06-30Adjust status on bad allocation explain requestsJason Tedor
When a user requests a cluster allocation explain in a situation where it does not make sense (for example, there are no unassigned shards), we should consider this a bad request instead of a server error. Yet, today by throwing an illegal state exception, these are treated as server errors. This commit adjusts these so that they throw illegal argument exceptions and are treated as bad requests. Relates #25503
2017-06-30Preliminary support for ARMDrew Raines
This commit adds preliminary support for 64-bit ARM architectures. Relates #25318
2017-06-30Add additional test for sequence-number recoveryJason Tedor
This commit adds a test for a scenario where a replica receives an extra document that the promoted replica does not receive, misses the primary/replica re-sync, and the recovers from the newly-promoted primary. Relates #25493
2017-06-30WrapperQueryBuilder should also rewrite the parsed query.Martijn van Groningen
Failing to do so can cause other errors later on during query execution. For example if `WrapperQueryBuilder` wraps a `GeoShapeQueryBuilder` that fetches the shape from an index then it will skip the shape fetching and fail later with the error that no shapes have been fetched.
2017-06-30Remove dead code and stale JavadocYannick Welsch
2017-06-29Use LRU set to reduce repeat deprecation messagesJason Tedor
This commit adds an LRU set to used to determine if a keyed deprecation message should be written to the deprecation logs, or only added to the response headers on the thread context. Relates #25474
2017-06-29Add NioTransport threads to thread name checks (#25477)Tim Brooks
We have various assertions that check we never block on transport threads. This commit adds the thread names for the NioTransport to these assertions. With this change I had to fix two places where we were calling blocking methods from the transport threads.
2017-06-29Add shortcut for AbstractQueryBuilder.parseInnerQueryBuilder to ↵Christoph Büscher
QueryShardContext
2017-06-29Remove QueryParseContext from parsing QueryBuilders (#25448)Christoph Büscher
Currently QueryParseContext is only a thin wrapper around an XContentParser that adds little functionality of its own. I provides helpers for long deprecated field names which can be removed and two helper methods that can be made static and moved to other classes. This is a first step in helping to remove QueryParseContext entirely.
2017-06-29Promote replica on the highest version node (#25277)Lee Hinman
* Promote replica on the highest version node This changes the replica selection to prefer to return replicas on the highest version when choosing a replacement to promote when the primary shard fails. Consider this situation: - A replica on a 5.6 node - Another replica on a 6.0 node - The primary on a 6.0 node The primary shard is sending sequence numbers to the replica on the 6.0 node and skipping sending them for the 5.6 node. Now assume that the primary shard fails and (prior to this change) the replica on 5.6 node gets promoted to primary, it now has no knowledge of sequence numbers and the replica on the 6.0 node will be expecting sequence numbers but will never receive them. Relates to #10708 * Switch from map of node to version to retrieving the version from the node * Remove uneeded null check * You can pretend you're a functional language Java, but you're not fooling me. * Randomize node versions * Add test with random cluster state with multiple versions that fails shards * Re-add comment and remove extra import * Remove unneeded stuff, randomly start replicas a few more times * Move test into FailedNodeRoutingTests * Make assertions actually test replica version promotion * Rewrite test, taking Yannick's feedback into account
2017-06-29use diamond operatorMartijn van Groningen
2017-06-29Use DocumentField#toXContent and parsing in SearchHit (#25469)Christoph Büscher
As a small follow-up to #25361, we can use DocumentFields toXContent/fromXContent in SearchHit now.
2017-06-29Unify the result interfaces from get and search in Java client (#25361)olcbean
As GetField and SearchHitField have the same members, they have been unified into DocumentField. Closes #16440
2017-06-28Emit settings deprecation logging at most onceJason Tedor
When a setting is deprecated, if that setting is used repeatedly we currently emit a deprecation warning every time the setting is used. In cases like hitting settings endpoints over and over against a node with a lot of deprecated settings, this can lead to excessive deprecation warnings which can crush a node. This commit ensures that a given setting only sees deprecation logging at most once. Relates #25457
2017-06-28Output all empty snapshot info fields if in verbose mode (#25455)Ali Beyad
In #24477, a less verbose option was added to retrieve snapshot info via GET /_snapshot/{repo}/{snapshots}. The point of adding this less verbose option was so that if the repository is a cloud based one, and there are many snapshots for which the snapshot info needed to be retrieved, then each snapshot would require reading a separate snapshot metadata file to pull out the necessary information. This can be costly (performance and cost) on cloud based repositories, so a less verbose option was added that only retrieves very basic information about each snapshot that is all available in the index-N blob - requiring only one read! In order to display this less verbose snapshot info appropriately, logic was added to not display those fields which could not be populated. However, this broke integrators (e.g. ECE) that required these fields to be present, even if empty. This commit is to return these fields in the response, even if empty, if the verbose option is set.
2017-06-28Fix race condition in RemoteClusterConnection node supplier (#25432)Jay Modi
This commit fixes a race condition in the node supplier used by the RemoteClusterConnection. The node supplier stores an iterator over a set backed by a ConcurrentHashMap, but the get operation of the supplier uses multiple methods of the iterator and is suceptible to a race between the calls to hasNext() and next(). The test in this commit fails under the old implementation with a NoSuchElementException. This commit adds a wrapper object over a set and a iterator, with all methods being synchronized to avoid races. Modifications to the set result in the iterator being set to null and the next retrieval creates a new iterator.
2017-06-28Do not search locally if remote index pattern resolves to no indices (#25436)Jay Modi
This commit changes how we determine if there were any remote indices that a search should have been executed against. Previously, we used the list of remote shard iterators but if the remote index pattern resolved to no indices there would be no remote shard iterators even though the request specified remote indices. The map of remote cluster names to the original indices is used instead so that we can determine if there were remote indices even when there are no remote shard iterators. Closes #25426
2017-06-28Expand `/_cat/nodes` to return information about hard drive (#21775)Andreas Gebhardt
Expand `/_cat/nodes` with already present information about available disk space `diskAvail` (alias: `d`, `disk`) by: * `diskTotal` (alias `dt`): total disk space * `diskUsed` (alias `du`): used disk space (`diskTotal - diskAvail`) * `diskUsedPercent` (alias `dup`): used disk space percentage Note: The available disk space is the number of bytes available to the node's Java virtual machine. The size might be smaller than the real one. That means the used disk space (percentage) is larger. Closes #21679
2017-06-28Introduce NioTransport into framework for testing (#24262)Tim Brooks
This commit introduces a nio based tcp transport into framework for testing. Currently Elasticsearch uses a simple blocking tcp transport for testing purposes (MockTcpTransport). This diverges from production where our current transport (netty) is non-blocking. The point of this commit is to introduce a testing variant that more closely matches the behavior of production instances.
2017-06-28_nodes/stats should not fail due to concurrent AlreadyClosedException (#25016)Chris Earle
This catches `AlreadyClosedException` during `stats` calls to avoid failing a `_nodes/stats` request because of the ignorable, concurrent index closure.
2017-06-28Use a single method to update shard stateYannick Welsch
This commit refactors index shard to provide a single method for updating the shard state on an incoming cluster state update. Relates #25431
2017-06-28Do not swallow exception when relocatingJason Tedor
When relocating a shard before changing the state to relocated, we verify that a relocation is a still taking place. Yet, this can throw an exception if the relocation is in fact no longer valid. Sadly, we were swallowing the exception in this situation. This commit allows such an exception to bubble up after safely releasing resources.
2017-06-28Remove implicit 32-bit supportJason Tedor
We previously tried to maintain (while not formally supporting) 32-bit support, although we never tested this anywhere in CI. Since we do not formally support this, and 32-bit usage is very low, we have elected to no longer maintain 32-bit support. This commit removes any implication of 32-bit support. Relates #25435
2017-06-28Disallow multiple concurrent recovery attempts for same target shard (#25428)Yannick Welsch
The primary shard uses the GlobalCheckPointTracker to track local checkpoint information of recovering and started replicas in order to calculate the global checkpoint. As the tracker is updated through recoveries as well, it is easier to reason about the tracker if we can ensure that there are no concurrent recovery attempts for the same target shard (which can happen in case of network disconnects).
2017-06-28Update global checkpoint when increasing primary term on replica (#25422)Yannick Welsch
When a replica shard increases its primary term under the mandate of a new primary, it should also update its global checkpoint; this gives us the guarantee that its global checkpoint is at least as high as the new primary and gives a starting point for the primary/replica resync. Relates to #25355, #10708
2017-06-28Add version 5.4.3 after releaseDaniel Mitterdorfer
2017-06-27Rename handoff primary context transport handlerJason Tedor
This commit renames this handler from "hand_off" to "handoff" since "handoff" is an actual word in the English language.
2017-06-27correct expected thrown exception in mappingMetaData to ↵Tal Levy
ElasticsearchParseException (#25410)
2017-06-27Add Javadocs and tests for set difference methodsJason Tedor
This commit adds Javadocs and tests for some set difference utility methods in core.
2017-06-26Remove default path settingsJason Tedor
This commit removes the default path settings for data and logs. With this change, we now ship the packages with these settings set in the elasticsearch.yml configuration file rather than going through the default.path.data and default.path.logs dance that we went through in the past. Relates #25408
2017-06-26Make plugin loading stricterJason Tedor
Today we load plugins reflectively, looking for constructors that conform to specific signatures. This commit tightens the reflective operations here, not allowing plugins to have ambiguous constructors. Relates #25405
2017-06-26Remove path.conf settingJason Tedor
This commit removes path.conf as a valid setting and replaces it with a command-line flag for specifying a non-default path for configuration. Relates #25392
2017-06-26Remove LongTupleJason Tedor
This commit removes an abstraction that was introduced when introducing the primary context. As this abstraction is used in exactly one place, we simply make that abstraction local to its usage so that we do not accumulate yet another general abstraction with exactly one usage. Relates #25402
2017-06-26Introduce primary context (#25122)Jason Tedor
* Introduce primary context The target of a primary relocation is not aware of the state of the replication group. In particular, it is not tracking in-sync and initializing shards and their checkpoints. This means that after the target shard is started, its knowledge of the replication group could differ from that of the relocation source. In particular, this differing view can lead to it computing a global checkpoint that moves backwards after it becomes aware of the state of the entire replication group. This commit addresses this issue by transferring a primary context during relocation handoff. * Fix test * Add assertion messages * Javadocs * Barrier between marking a shard in sync and relocating * Fix misplaced call * Paranoia * Better latch countdown * Catch any exception * Fix comment * Fix wait for cluster state relocation test * Update knowledge via upate local checkpoint API * toString * Visibility * Refactor permit * Push down * Imports * Docs * Fix compilation * Remove assertion * Fix compilation * Remove context wrapper * Move PrimaryContext to new package * Piping for cluster state version This commit adds piping for the cluster state version to the global checkpoint tracker. We do not use it yet. * Remove unused import * Implement versioning in tracker * Fix test * Unneeded public * Imports * Promote on our own * Add tests * Import * Newline * Update comment * Serialization * Assertion message * Update stale comment * Remove newline * Less verbose * Remove redundant assertion * Tracking -> in-sync * Assertions * Just say no Friends do not let friends block the cluster state update thread on network operations. * Extra newline * Add allocation ID to assertion * Rename method * Another rename * Introduce sealing * Sealing tests * One more assertion * Fix imports * Safer sealing * Remove check * Remove another sealed check
2017-06-26Move more token filters to analysis-common moduleMartijn van Groningen
The following token filters were moved: stemmer, stemmer_override, kstem, dictionary_decompounder, hyphenation_decompounder, reverse, elision and truncate. Relates to #23658
2017-06-25Test: Allow merging mock secure settings (#25387)Ryan Ernst
While real secure settings (ie an ES keystore) cannot be merged together, mocked secure settings can and need to be sometimes merged. This commit adds a merge method to allow tests to merge together multiple instances of secure settings.
2017-06-24Remove dead logger prefix codeJason Tedor
When Log4j 2 was introduced, we removed support for the system property es.logger.prefix. Yet, some code was left behind. This commit removes that dead code. Relates #25377